curl 8.4.0 已正式发布,创始人 Daniel Stenberg(社区称号 bagder)已提前一周预告了该版本 —— 修复高危安全漏洞,并称该漏洞可能是很长一段时间以来 curl 遇到的最严重漏洞,同时影响到 libcurl 库和 curl 工具。
根据介绍,这个高危漏洞是 SOCKS5 堆溢出漏洞 (heap buffer overflow),该漏洞 (CVE-2023-38545) 导致 curl 在 SOCKS5 代理握手过程中溢出基于堆的缓冲区。
有开发者解释称,该漏洞出现的场景是输入的域名太长,从而导致内存溢出。当然前提条件是使用了 SOCKS5 代理。 两种典型的攻击场景如下:
- 某些程序里内置 libcurl,而允许外部用户指定 socket5 代理以及输入超长的域名,则可以发起攻击
- 用户在使用 curl 或者 libcurl 时,使用了 socket5 代理,并且 http 请求到恶意服务器,并且恶意服务器返回了 http 30x 跳转,把用户访问目标指向一个超长域名从而导致溢出
另一个被评级为 "LOW" 的 CVE-2023-38546 漏洞是通过 none 文件进行 cookie 注入。
此漏洞允许攻击者在满足一系列特定条件并将 cookie 放入应用程序当前目录中名为 "none" 的文件的情况下,使用 libcurl 在运行的程序中任意插入 cookie。