net库爆混合格式的IP地址验证漏洞,影响Go和Rust语言。
成都创新互联公司长期为近千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为腾冲企业提供专业的成都做网站、成都网站建设,腾冲网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
"net"库是Go和Rust语言中常用的库函数。近日,Cheng Xu等研究人员在DEF CON大会介绍了Go和Rust语言中的net模块安全漏洞。漏洞CVE编号分别为CVE-2021-29922 (Rust)和CVE-2021-29923 (Golang),漏洞产生的原因是net处理混合格式的IP地址方式上存在问题,即当数字IPv4地址中以0开头时会触发漏洞。该漏洞影响Go和Rust语言。依赖net库的应用可能会受到服务器端请求伪造(SSRF)和远程文件包含(RFI)攻击。
研究人员在GitHub上搜索关键字"import net",发现依赖该net库的GO语言程序就有超过400万个。
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 net模块将混合格式的IP地址以十进制处理的PoC代码
这一错误处理可能会引发应用中服务器端请求伪造(SSRF)和远程文件包含(RFI)攻击。
Go和Rust并不是唯二受该漏洞影响的语言。该混合格式IP地址验证漏洞之前就影响了Python的ipaddress库(CVE-2021-29921)、netmask实现(CVE-2021-28918、CVE-2021-29418)和其他库函数。
目前,golang的net模块已经在v 1.17版本中发布了该漏洞的安全补丁。Rust也在v 1.53.0版本中包含了该漏洞的安全补丁。
Rust语言补丁
本文翻译自:https://www.bleepingcomputer.com/news/security/go-rust-net-library-affected-by-critical-ip-address-validation-vulnerability/如若转载,请注明原文地址。
新闻标题:DEF CON 21:IP地址验证漏洞影响Go和Rust语言
网页URL:http://www.shufengxianlan.com/qtweb/news22/77672.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联