安全公告–关于控制台组件libcurl漏洞CVE-2023-38545

摘要:

libcurl漏洞CVE-2023-38545,此缺陷导致 SOCKS5 代理握手中的curl 溢出基于堆的缓冲区。

当要求curl 将主机名传递给SOCKS5 代理以允许其解析地址而不是由curl 本身完成时,主机名的最大长度为255 字节。

如果检测到主机名超过 255 个字节,curl 会切换到本地名称解析,而仅将解析后的地址传递给代理。 由于一个错误,表示“让主机解析名称”的局部变量可能在缓慢的 SOCKS5 握手期间获得错误的值,并且与意图相反,将太长的主机名复制到目标缓冲区,而不是仅复制已解析的主机名的地址那里。

漏洞信息由 Jay Satiro提供。链接:https://curl.se/docs/CVE-2023-38545.html

目前已有修复的控制版本可更新。

影响范围:

i2up企业版本7.1.74.23110613之前的控制台版本。

影响后果:

此缺陷会导致 SOCKS5 代理握手中的curl 溢出基于堆的缓冲区。

漏洞评分:

CVE-2023-38545的CVSSv3评分为9.8,等级:严重。

漏洞详细描述:

主机名来自于curl 被告知要操作的URL。

目标缓冲区是 libcurl 中基于堆的下载缓冲区,在传输开始之前重用于 SOCKS 协商。 缓冲区的大小默认为 16kB,但应用程序可以设置为不同的大小。 默认情况下,curl 工具将其设置为 102400 字节 – 但如果 –limit-rate 设置低于每秒 102400 字节,则会将缓冲区大小设置为较小的大小。libcurl 提供了 CURLOPT_BUFFERSIZE 选项来更改下载缓冲区的大小。libcurl 接受 URL 中最多 65535 字节的主机名。

如果使用的主机名比目标缓冲区长,则有一个 memcpy() 将缓冲区覆盖到堆中。 URL 解析器和可能的 IDN 库(如果使用curl 构建)必须接受主机名,这在一定程度上限制了可在副本中使用的可用字节序列集。

要发生溢出,需要足够慢的 SOCKS5 握手来触发本地变量错误,并且客户端使用的主机名长于下载缓冲区。 可能是恶意 HTTPS 服务器重定向到特制的 URL。

典型的服务器延迟可能“慢”到足以触发此错误,而攻击者无需通过 DoS 或 SOCKS 服务器控制来影响它。

仅在未设置 CURLOPT_BUFFERSIZE 或将其设置为小于 65541 的应用程序中才可能发生溢出。由于curl 工具默认将 CURLOPT_BUFFERSIZE 设置为 100kB,因此除非用户将速率限制设置为小于 65541 字节/秒,否则它不会受到攻击。

导致在 libcurl 中使用具有远程主机名的 SOCKS5 的选项:
CURLOPT_PROXYTYPE 设置为 CURLPROXY_SOCKS5_HOSTNAME 类型,或者CURLOPT_PROXY或CURLOPT_PRE_PROXY设置为使用socks5h://方案
代理环境变量之一可以设置为使用socks5h://方案。 例如 http_proxy、HTTPS_PROXY 或 ALL_PROXY。
导致在curl工具中使用具有远程主机名的SOCKS5的选项:
–socks5-主机名,或:
–proxy或–preproxy设置为使用socks5h://方案
libcurl 部分中描述的环境变量。
当 SOCKS5 握手代码从阻塞函数转换为非阻塞状态机时,引入了此错误。

本节中的分析特定于curl版本8。curl版本7的一些旧版本对主机名长度和/或无法被CURLOPT_BUFFERSIZE覆盖的更小的SOCKS协商缓冲区大小的限制较少。

常见漏洞披露 (CVE) 项目已将此问题指定为 CVE-2023-38545。

CWE-122:基于堆的缓冲区溢出
HackerOne:https://hackerone.com/reports/2187833

规避方案:

从curl 8.4.0 开始,如果名称太长,curl 不再切换到本地解析模式,而是正确返回错误。
固定:https://github.com/curl/curl/commit/fb4415d8aee6c1
建议:
A – 将curl升级到版本8.4.0
B – 将补丁应用到您的本地版本
C – 不要在curl中使用CURLPROXY_SOCKS5_HOSTNAME代理
D – 不要将代理环境变量设置为socks5h://

解决方案及版本更新计划:

升级英方控制台版本到7.1.74.23110613及以上版本。

版本获取途径:

 https://share.i2yun.com/m/71ba030d67/  密码:Info2soft

漏洞信息来源及漏洞被利用情况:

目前并未了解到有其他公共渠道对本文中提到的漏洞进行发布,以及漏洞被恶意利用的情况。

技术支撑渠道:

若有产品使用问题请发邮件到support@info2soft.com咨询,或拨打4000078655转2咨询。