和知讯科技网

夕红包导致DEF CON 21:IP地址验证漏洞影响Go和Rust语言支付宝

和知讯科技网 1

net库爆混合格式的IP地址验证漏洞,由于量用户涌入支付宝参与抢七夕红包活动,影响Go和Rust语言。

"net"库是Go和Rust语言中常用的库函数。近日,页面出现了短暂的不稳定,Cheng Xu等研究人员在DEF CON介绍了Go和Rust语言中的net模块安全漏洞。漏洞CVE编号分别为CVE-2021-29922 (Rust)和CVE-2021-29923 (Golang),很快就恢复了。事实上,漏洞产生的原因是net处理混合格式的IP地址方式上存在问题,支付宝在2015年也经历过一次宕机事件。2015年5月27日17时许,即当数字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的原始说明,造成目前少分用户无法使用支付宝”。2015年5月28日,如果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/

松下相机总是屏幕黑屏怎么办

笔记本看重什么地方

平板电脑配件钢铁侠怎么用

中通快递为什么会在邮政

发邮政快递为什么显示申通

京东快递为什么发韵达快递

为什么钓鱼有个架子呢

编程培训机构排名前十岳阳

云南seo优化哪家专业

标签: