受欢迎的NPM网络掩码库最近遇到了一个严重的问题,如下所述:

NPM NetMask包错误地评估包含八大字符串的单个IPv4八位字节作为左剥离的整数,导致数十万个项目依赖NetMask的数千个项目来过滤或评估IPv4块范围,都是入站和出站。

了解?

如果你无法阅读Mumbo Jumbo,请坚持,我会尝试解释。

基础知识

NPM Library NetMask由数十万份申请和储存量超过300万次。它用于读取和操纵IP地址。

如果您了解IP地址和八个八个八个,则可以跳过下一节。

IP地址

IP地址告诉我们如何在网络中找到某个设备。对于每个网络,计算机连接到,它在该网络上具有IP地址。本网站的IP地址是130.211.198.3, 例如。

在计算机内部发生的一些事情也依赖于IP地址。因为我们可以使用0.0.0.0.要么127.0.0.1.,这就是为什么那个被称为“home”或“localhost”的原因。

域名用于解决计算机的名称与IP地址相关联。域名系统(DNS.)翻译人员使用的域名,如博客.ma必威平台APPlwarebytes.com进入计算机使用的IP地址,如130.211.198.3。DNS系统通常与电话簿进行比较,您可以在那里查找一个人的名称以找到他们的电话号码。

IPv4八位字节

当您看到IP地址时,您可能会识别它是为了它是什么。IP版本4地址的典型格式非常熟悉:0到255之间的四个数字,分隔三个点。

实际上,IP地址是32位数的小数表示。32位数一次分组8位,每组8位是八位字节。八位字节由点分开,并以十进制格式表示,这被称为虚线十进制符号。可能性范围从0.0.0.0.255.255.255.255

十进制和八进制之间的差异

十进制意味着在基本十个系统中表达的数字是我们使用使用数字0到9的每天使用的系统,而八进构是指使用八位0,1,2,3,4,5的数字系统,6,7。

由于IP地址是32位数,因此使用八进制数系是很有意义的。在该系统中,虚线八进制127.0.0.1.看起来像0177.0000.0000.0001。这就是为什么:

十进制,根据他们有多少个,数十个,数百个等等编写数字。所以数字127.1* 100,2* 10和7.* 1。

在八进阶中,根据他们有多少人写入的数字,有多少八个,有多少64岁。所以第127号代表为0177.,这是0.* 128,1* 64,7.* 8和7.* 1。

使用不同的数字系统对计算机没有问题,只要它清楚您使用的是哪一个。然而,允许允许混合输入询问问题。

网络掩蔽漏洞

Zeroes.

要了解问题,它有助于了解事情应该如何工作,复制八进制IP地址0177.0000.0000.0001进入浏览器地址栏。它应该被正确翻译成127.0.0.1.。并尝试0177.0.0.1.在您以前使用的相同浏览器中。并且当它仍然需要你的时候惊讶127.0.0.1.尽管我们没有完整地写出最后三个八位字节。

127.0.0.1.0177.0.0.1.看起来他们处于同样的符号,但它们不是。第一个零0177.0.0.1.做出所有的区别,你的浏览器知道这一点。

错误

TnetMask的问题是它从IP地址剥离了领先的Zeroes。所以,如果你喂它一个以零开始的地址,就像0177.0000.0000.0001,它不会将其作为八进制地址识别并将其转换为十进制版本,127.0.0.1.喜欢你的浏览器。相反,它会将其视为十进制地址,177.0.0.1.,这是完全不同的计算机的地址

虽然这似乎更具不便,但在第一眼看来,当攻击者能够影响应用程序解析的IP地址输入时,错误可能会产生各种漏洞。

私人IP与否?

请记住,当我写下您的计算机在它连接的每个网络中具有IP地址?某些IP地址范围是为内部网络保留的,无法在Internet上使用。最着名的可能是192.168.1.0192.168.1.255,经常被写为192.168.1.xxx.。许多家庭网络使用10.0.1.xxx.网络范围。

重要的是,许多系统被设置为更信任从专用网络内部的流量。看看它如何构成问题?如果攻击者提供了一个易受攻击的网络掩码版本的地址012.0.0.1.,网络掩码会将其视为公共地址12.0.0.1.而不是私人地址10.0.0.1.

根据NetMask自己的维护者,漏洞可能使攻击者滥用这种信任并获得他们不应该的各种东西:

远程经过身份验证或未经身份验证的攻击者可以绕过依赖网络掩码的软件包,以过滤IP地址块以访问Intranet,VPN,容器,相邻VPC实例或LAN主机

CVE-2021-28918

公开披露的计算机安全漏洞列于常见的漏洞和暴露(CVE)数据库。其目标是使其更容易跨单独的漏洞功能(工具,数据库和服务)共享数据。这个零天被列为CVE-2021-28918

CVE-2021-28918的修复已在2.0.1版中发布网络掩码关于NPM下载。perl组件NET :: NetMask.也遭受了这一缺陷,它的维护者,乔布雷马斯拉克今天发布了固定的2.0000版本。

保持安全,每个人!