DEF CON 21:IP地址验证漏洞影响Go和Rust语言

安全
net库爆混合格式的IP地址验证漏洞,影响Go和Rust语言。近日,Cheng Xu等研究人员在DEF CON大会介绍了Go和Rust语言中的net模块安全漏洞。

[[417564]]

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地址方式上存在问题,即当数字IPv4地址中以0开头时会触发漏洞。该漏洞影响Go和Rust语言。依赖net库的应用可能会受到服务器端请求伪造(SSRF)和远程文件包含(RFI)攻击。

研究人员在GitHub上搜索关键字"import net",发现依赖该net库的GO语言程序就有超过400万个。

IP地址可以以多种形式来表示,其中包括十六进制数和整数,不过一般我们看到的IPv4地址都是整数格式的,比如104.20.59.209。如果标称八进制就是0150.0024.0073.0321。

DEF CON 21:IP地址验证漏洞影响Go和Rust语言

Chrome自动补全0开头的IP地址

在net库中,所有IP地址开头的0都会被移除和丢弃。根据IETF的原始说明,如果IPv4地址的前缀有0,那么可以理解为是八进制。但是Go和rust语言的net模块都忽略了这一点,并将其作为十进制数来处理。

因此,如果开发者使用net库来验证IP地址是否属于某个特定的范围,比如访问控制列表ACL中的IP列表,结果可能就会出现错误。

DEF CON 21:IP地址验证漏洞影响Go和Rust语言

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版本中包含了该漏洞的安全补丁。

DEF CON 21:IP地址验证漏洞影响Go和Rust语言

 

Rust语言补丁

本文翻译自:https://www.bleepingcomputer.com/news/security/go-rust-net-library-affected-by-critical-ip-address-validation-vulnerability/如若转载,请注明原文地址。

 

责任编辑:姜华 来源: 嘶吼网
相关推荐

2021-08-10 09:34:58

漏洞语言混合进制IP地址

2013-08-12 14:40:06

2013-08-12 14:25:27

2013-08-07 10:53:19

2019-08-04 20:13:55

2020-07-07 07:00:00

RustGo语言编程语言

2015-11-25 10:43:03

DGORust

2022-05-09 10:36:05

PythonPyScript开发者

2024-03-01 20:16:03

GoRust语言

2014-08-12 10:32:30

2020-07-15 08:00:52

Rust语言技巧

2022-09-16 07:40:17

CloudWeGo开源Rust

2023-12-15 14:38:00

GoRust编程语言

2022-01-26 10:15:16

漏洞攻击

2019-05-07 16:26:59

DEF CON CHI百度安全

2020-10-22 06:59:09

GolangRust语言

2022-06-22 10:04:29

JavaScriptRust语言

2013-09-27 11:31:18

IP地址MAC地址

2021-09-28 11:33:08

iOS 15iCloud漏洞泄露

2021-03-31 11:29:12

OpenSSLDoS证书验证漏洞
点赞
收藏

51CTO技术栈公众号