大工网安告[2023]037
一、情况分析
近日,发现Curl/libcurl 缓冲区溢出漏洞(CVE-2023-38545)。当使用socks5代理时,如果主机名大于255则curl会尝试使用本地解析代替远程解析,但没有按照预期工作,导致内存损坏,攻击者可以构造恶意主机名触发漏洞,成功利用该漏洞将造成代码执行。经过研判,此漏洞的触发需要配置使用socks5代理,且设置主机名参数为大于255长度的值,利用条件较为苛刻,且利用后大概率仅可以达到拒绝服务的效果,建议相关用户酌情升级。
curl从1998年维护至今,已经成为HTTP请求命令行工具的事实标准,具有丰富的Api和Abi(应用程序二进制接口)。curl被用于汽车、电视机、路由器、打印机、音频设备、手机、平板电脑、医疗设备、机顶盒、电脑游戏、媒体播放器等各种设备中,并且在超过200亿个安装中作为互联网传输引擎被成千上万的软件应用程序使用。
libcurl是curl的一个开发库,它提供了用于进行网络通信和数据传输的API和功能。libcurl库允许开发人员在自己的应用程序中集成curl的功能,以便进行HTTP、FTP、SMTP等协议的数据传输。通过libcurl,开发人员可以方便地执行各种网络操作,例如发送HTTP请求、下载文件、上传文件等。libcurl是一个非常流行和广泛使用的网络库,常用于编写网络应用程序和客户端。
二、影响范围
7.69.0 <= libcurl <= 8.3.0
三、处置建议
官方补丁
目前,官方已发布修复建议,建议受影响的用户尽快升级至安全版本:https://curl.se/download/
临时处理建议
在libcurl和curl工具 中使用SOCKS5代理相关功能可能触发此漏洞,客户可以关注是否使用相关选项:
1.导致在libcurl中使用具有远程主机名的SOCKS5的选项:
- `CURLOPT_PROXYTYPE`设置为类型`CURLPROXY_SOCKS5_HOSTNAME`,或者:
- `CURLOPT_PROXY`或`CURLOPT_PRE_PROXY`设置为方案`socks5h://`
2.导致在curl工具中使用具有远程主机名的SOCKS5的选项:
- `--socks5-主机名`,或者:
- `--proxy`或`--preproxy`设置为方案`socks5h://`
参考链接:https://github.com/curl/curl/discussions/12026