linux扫描ip地址漏洞,Python的IP地址验证漏洞CVE-2021-29921详细介绍

当前,Python 标准库 ipaddress 被发现存在严重的 IP 地址验证漏洞,该漏洞已被标识为“CVE-2021-29921”,据研究人员说,这个漏洞从 Python 3.8.0 到 3.10 版本时才出现,涉及 Linux、Windows、MacOS 平台,请用户注意并防范,以下将详细介绍该漏洞。

12964c8e97d64843844808f40d55d4fa.png

详细内容

Python 标准库 ipaddress 被发现存在严重的 IP 地址验证漏洞,与 2021 年早些时候“netmask”库中报告的漏洞相同。

当前,发现 netmask 关键漏洞的研究人员也在 ipaddress 模块中发现了同样的漏洞,并获得了一个新的漏洞标识符:CVE-2021-29921。该漏洞于 Python 3.3 版本中随 ipaddress 标准库引入。Python 的 ipaddress 模块主要提供创建 IP 地址、网络和接口的功能,并可以对以不同格式输入的 IP 地址进行解析。

众所周知,IPv4 地址可以用多种格式表示,包括十进制、整数、八进制和十六进制,但最常见的格式是十进制,例如 localhost 127.0.0.1。但如果在它前面加上一个 0,浏览器会将整个字符串视为八进制格式的 IP 地址。比如在 Chrome 的地址栏中输入 0127.0.0.1,IP 实际上变成了十进制的 87.0.0.1,这也是大多数应用程序应该处理这种模糊的 IP 地址的方式。

5c1730c3a4e1d8676e5a6cfab4fbbb30.png

值得注意的是,127.0.0.1 并不是一个公共的 IP 地址,这种模糊的表述将它变成了一个公共的 IP 地址。根据 IETF 的原始规范,对于模糊的 IP 地址,如果前缀为 "0",IPv4 地址的部分内容可以用八进制解释。但是,在 Python 标准库 ipaddress 的情况下,任何前缀零都会被简单地丢弃,即 '010.8.8.8' 会被当作 '10.8.8.8',而不是 '8.8.8.8'。

由于 ipaddress 输入验证不当,攻击者能够对许多依赖 ipaddress 的程序进行服务器端请求伪造(SSRF)、远程文件包含(RFI)和本地文件包含(LFI)攻击,例如,如果反 SSRF 绕过的封锁名单一直依赖 ipaddress 来解析 IP 列表,那么这种模糊的 IP 就很容易被塞进去。不过,尽管 ipaddress 模块是在 Python 3.3 中引入的,但据研究人员说,这个漏洞从 Python 3.8.0(Python 3.8新功能和新特性介绍) 到 3.10 版本时才出现,因为此前有一些检查,完全拒绝以混合格式(即八进制和十进制)提供的 IP 地址。

9daf0fe891f7bbd0f8d4cc427702e250.png

目前,Python 的维护者们正在讨论解决方案,但具体细节以及何时修复仍未明确,有兴趣的网友可访问 Python 官方网站(https://www.python.org/),获取第一时间资讯。另外,及时的升级到 Python 新版本是防范漏洞的最好手段。

相关主题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值