libcurl Socks5 堆缓冲区溢出漏洞
漏洞描述
curl 是用于在各种网络协议之间传输数据的命令行工具,libcurl 用于提供处理网络通信和数据传输的Api接口。curl 默认下载缓冲区为 102400 字节,但如果设置低于每秒 102400 字节,缓冲区大小会自动设置为更小的值。libcurl 下载缓冲区默认为 16KB,应用程序可通过 CURLOPT_BUFFERSIZE 选项设置其大小。
受影响版本中,libcurl对于Socks代理过程中解析的主机名长度未正确限制,使用 libcurl 的应用程序在未设置 CURLOPT_BUFFERSIZE 或将其设置小于 65541 时会造成堆缓冲区溢出;由于 curl 工具默认将 CURLOPT_BUFFERSIZE 设置为 100KB,因此除非用户将速率通过 --limit-rate 限制设置为每秒小于 65541 字节,默认不受影响。
当用户通过socks代理访问攻击者可控的地址时,如果攻击者通过302跳转等方式使得用户解析访问大于缓冲区长度的域名,可能造成拒绝服务,针对特定的平台和软件可能造成远程代码执行。
| 漏洞名称 | libcurl Socks5 堆缓冲区溢出漏洞 |
|---|---|
| 漏洞类型 | 堆缓冲区溢出 |
| 发现时间 | 2023-10-11 |
| 漏洞影响广度 | 广 |
| MPS编号 | MPS-cpg0-9qk3 |
| CVE编号 | CVE-2023-38545 |
| CNVD编号 | - |
影响范围
curl@[7.69.0, 8.4.0)
libcurl@[7.69.0, 8.4.0)
修复方案
不要将 CURLPROXY_SOCKS5_HOSTNAME 代理与curl一起使用
不要将代理环境变量设置为socks5h://
官方已发布补丁:https://github.com/curl/curl/commit/4a4b63daaa
升级libcurl到 8.4.0 或更高版本
升级curl到 8.4.0 或更高版本
参考链接
https://www.oscs1024.com/hd/MPS-cpg0-9qk3
https://nvd.nist.gov/vuln/detail/CVE-2023-38545
https://curl.se/docs/CVE-2023-38545.html
https://github.com/curl/curl/commit/4a4b63daaa
免费情报订阅&代码安全检测
OSCS是国内首个开源软件供应链安全社区,社区联合开发者帮助全球顶级开源项目解决安全问题,并提供实时的安全漏洞情报,同时提供专业的代码安全检测工具为开发者免费使用。社区开发者可以通过配置飞书、钉钉、企业微信机器人获取一手的情报。
免费代码安全检测工具: https://www.murphysec.com/?src=osc
免费情报订阅: https://www.oscs1024.com/cm/?src=osc
具体订阅方式详见: https://www.oscs1024.com/docs/vuln-warning/intro/?src=osc
