Curl漏洞-- CVE-2023-38545解决方案

CVE漏洞: CVE-2023-38545
漏洞等级:高 > > 中低(利用率比较低)
代码情况:Source Code 
影响版本:libcurl 7.69.0 ~ 8.3.0
漏洞描述:

         问题出现在文件 lib/socks.c 中。 当提供远程主机名并使用 SOCKS5 时,设置socks5_resolve_local 变量的逻辑中存在缺陷,这意味着当由于主机名长度超过 SOCKS5 中主机名字段的限制 255 而将其设置为 TRUE 时,连接可能会很慢 导致该分配被设置为FALSE的socks5_resolve_local覆盖。 这会导致不执行 IP 地址解析,而是将主机名按原样复制到目标缓冲区中。
        默认情况下,此缓冲区的大小为 16kB,但可能会根据curl 的配置方式而有所不同。 默认情况下,curl CLI 工具将缓冲区设置为 102400 字节,但如果提供了 --limit-rate 参数,则可能会设置为更小的值。 libcurl 提供了 CURLOPT_BUFFERSIZE 选项来更改缓冲区的大小。
curl 中的 URL 解析器可以接受长度最大为 65535 字节的主机名。 默认情况下,它仅支持有限的字节子集,并且这可能会根据curl是否构建为使用IDN库而改变。
       如果满足上述条件,足够长且具有正确字节集的主机名可能会溢出目标缓冲区并导致内存损坏。 一种可能的攻击场景是,如果攻击者控制了curl 客户端通过 SOCKS5 代理访问的 HTTPS 服务器,并从该服务器触发到恶意制作的主机名的重定向。 如果curl客户端设置为遵循自动重定向,并且代理速度慢到足以覆盖socks5_resolve_local,则可能会发生缓冲区溢出。
当远程 SOCKS5 主机名超过 255 限制时故意失败而不是恢复到本地解析,这已缓解了这一问题。

解决方法
       1) 不要在curl 中使用CURLPROXY_SOCKS5_HOSTNAME 代理。 不要将代理环境变量设置为socks5h://
        2) 对于无法升级的用户,请在本地版本上打补丁。  下载中包含的 README.md 文件提供了如何应用于本地版本的说明。
 解决方法:

解决方案修复在版本8.4.0中可用,Commit在这里
最新的稳定版本可以在这里找到。

你可能感兴趣的:(App,安全,安全开发,安全,web安全)