● 点击↑蓝字关注我们,获取更多安全风险通告
漏洞概述 |
|||
漏洞名称 |
curl SOCKS5 堆溢出漏洞 |
||
漏洞编号 |
QVD-2023-23751、CVE-2023-38545 |
||
公开时间 |
2023-10-10 |
影响对象数量级 |
亿级 |
奇安信评级 |
高危 |
CVSS 3.1分数 |
7.0 |
威胁类型 |
代码执行 |
利用可能性 |
低 |
POC状态 |
已公开 |
在野利用状态 |
未发现 |
EXP状态 |
未公开 |
技术细节状态 |
已公开 |
利用条件:需要通过socks5代理,且url可控。 |
(注:奇安信CERT的漏洞深度分析报告包含此漏洞的POC及技术细节,订阅方式见文末。)
影响组件
curl 从 1998 年维护至今,已经成为 HTTP 请求命令行工具的事实标准,具有丰富的 Api 和 Abi(应用程序二进制接口)。curl被用于汽车、电视机、路由器、打印机、音频设备、手机、平板电脑、医疗设备、机顶盒、电脑游戏、媒体播放器等各种设备中,并且在超过200亿个安装中作为互联网传输引擎被成千上万的软件应用程序使用。
libcurl是curl的一个开发库,它提供了用于进行网络通信和数据传输的API和功能。libcurl库允许开发人员在自己的应用程序中集成curl的功能,以便进行HTTP、FTP、SMTP等协议的数据传输。通过libcurl,开发人员可以方便地执行各种网络操作,例如发送HTTP请求、下载文件、上传文件等。libcurl是一个非常流行和广泛使用的网络库,常用于编写网络应用程序和客户端。
漏洞描述
近日,奇安信CERT监测到官方发布新版本修复curl SOCKS5 堆溢出漏洞(CVE-2023-38545),当使用socks5代理时,如果主机名大于255则curl会尝试使用本地解析代替远程解析,但没有按照预期工作,导致内存损坏,攻击者可以构造恶意主机名触发漏洞,成功利用该漏洞将造成代码执行。
鉴于此漏洞影响范围较大,建议客户尽快做好自查,经奇安信CERT研判漏洞利用条件苛刻,客户不必惊慌,可酌情排期修复。
本次更新内容:
新增产品线解决方案;
新增排查建议。
影响版本
7.69.0 <= libcurl <= 8.3.0
不受影响版本
Libcurl >= 8.4.0
Libcurl < 7.69.0
其他受影响组件
大多数现代操作系统都使用 libcurl,包括但不限于:
Android、Chrome OS、Cisco IOS、iOS、ipadOS、Linux、macOS、OpenBSD、RISC OS、SunOS、tvOS、ucLinux、vxWorks、WebOS、Windows、Xbox System。
将libcurl用作依赖项的软件包数量同样巨大,包括但不限于:
git, libcurl4-gnutls-dev, python-pycurl, libcurl4-openssl-dev, rng-tools, gnupg2, zabbix-agent, systemd, apache2-bin, xmlrpc-c-client, sssd-common, ipa-client, certmonger, php-curl, fwupd, libfwupd2, libreoffice-core, librepo, libraptor2-0, libcmis-0.5-5v5, python3-pycurl, passenger, geoipupdate, libappstream4, rsyslog, NetworkManager, python3-librepo, php8.1-curl, elfutils-debuginfod-client, cargo, python27-pycurl, git-core, mariadb-connector-c, apt-transport-https, php7.0-curl, google-chrome-stable, NetworkManager-cloud-setup, google-compute-engine-oslogin, qemu-block-extra, tpm2-tss, strongswan, syslog-ng-core, libcfitsio8, libcurl-devel, gnupg1。
目前,奇安信CERT已成功复现curl SOCKS5 堆溢出漏洞(CVE-2023-38545),截图如下:
安全更新
目前官方已发布最新版本,建议受影响用户升级至 libcurl >= 8.4.0:
git clone https://github.com/curl/curl.git
./configure –withguntls
make && make install
暂时无法升级的用户建议:
不要与 CURLPROXY_SOCKS5_HOSTNAME 代理一起使用;
不要将代理环境变量http_proxy、all_proxy和https_proxy设置为socks5h://
排查方案
依赖libcurl的软件可能会动态依赖系统lib目录下的libcurl或者静态打包入内,可以使用如下python脚本扫描/lib目录内含有受影响libcurl版本的so并输出对应so路径:
import
re
import
os
import
subprocess
libcurl_pattern =
r"^libcurl/(7.(?:6[9]|([7-9]d)|[1-9]d{2,}).d+|8.(?:([0-2].d+|3.0)))$"
libcurl_regex = re.compile(libcurl_pattern)
so_pattern =
r".*.so(.d+)*$"
so_regex = re.compile(so_pattern)
root_dir =
"/lib/"
for
root, dirs, files
in
os.walk(root_dir):
for
file
in
files:
if
so_regex.match(file):
file_path = os.path.join(root, file)
p = subprocess.Popen([
"strings"
, file_path],
stdout=subprocess.PIPE)
p2 = subprocess.Popen(
[
"grep"
,
"-P"
,
"^libcurl/(7.(?:6[9]|([7-9]d)|[1-9]d{2,}).d+|8.(?:([0-2].d+|3.0)))$"
], stdin=p.stdout, stdout=subprocess.PIPE)
output = p2.communicate()[
0
].decode(
'utf-8'
)
if
"curl"
in
output:
# print(output)
print(
"vulnerable .so path:"
+file_path +
"tversion "
+output.strip())
print(
"Done!"
)
Debian系统可以使用包管理器查找依赖libcurl的包:
dpkg -l | grep libcurl
产品解决方案
奇安信开源卫士已支持
奇安信开源卫士20231011. 408版本已支持对curl SOCKS5 堆溢出漏洞 (CVE-2023-38545)的检测。
[1]https://curl.se/docs/CVE-2023-38545.html
2023年10月11日,奇安信 CERT发布安全风险通告;
2023年10月12日,奇安信 CERT发布安全风险通告第二次更新。
原文始发于微信公众号(奇安信 CERT):【已复现】curl SOCKS5 堆溢出漏洞(CVE-2023-38545)安全风险通告第二次更新
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论