当前位置: 首页 > 科技观察

DEFCON21:IP地址验证漏洞影响Go和Rust语言

时间:2023-03-18 19:36:45 科技观察

net库爆混合格式IP地址验证漏洞影响Go和Rust语言。“net”库是Go和Rust语言中常用的函数库。近日,程旭等研究人员在DEFCON大会上介绍了Go和Rust语言中的net模块安全漏洞。漏洞的CVE编号为CVE-2021-29922(Rust)和CVE-2021-29923(Golang)。产生漏洞的原因是net处理混合格式IP地址的方式存在问题,即当数字IPv4地址以0开头时会触发bug。该漏洞影响Go和Rust语言。依赖网络库的应用程序容易受到服务器端请求伪造(SSRF)和远程文件包含(RFI)攻击。研究人员在GitHub上搜索关键字“importnet”,发现有超过400万个GO语言程序依赖于net库。IP地址可以用多种形式表示,包括十六进制数和整数,但一般我们看到的IPv4地址都是整数格式,比如104.20.59.209。如果标称八进制为0150.0024.0073.0321。Chrome自动补全0开头的IP地址,在net库中,IP地址开头的全0会被去掉并丢弃。按照IETF原来的说明,如果IPv4地址的前缀有0,可以理解为八进制。但是Go和rust的net模块都忽略了这一点,并将其视为十进制数。因此,如果开发人员使用net库来验证某个IP地址属于某个范围,例如ACL中的IP列表,结果可能是错误的。Rust网络模块错误地将混合格式IP地址处理为十进制PoC代码,可能导致应用程序中的服务器端请求伪造(SSRF)和远程文件包含(RFI)攻击。受影响的应用程序和语言Go和Rust并不是唯一受漏洞影响的语言。混合格式IP地址验证漏洞先前影响了Python的ipaddress库(CVE-2021-29921)、网络掩码实现(CVE-2021-28918、CVE-2021-29418)和其他库函数。目前golang的net模块已经在v1.17版本发布了针对该漏洞的安全补丁。Rust还在v1.53.0版本中包含针对此漏洞的安全补丁。RustLanguagePatch本文翻译自:https://www.bleepingcomputer.com/news/security/go-rust-net-library-affected-by-critical-ip-address-validation-vulnerability/如有转载请注明原文地址。