漏洞概述
General Info
cURL 是一个支持多种网络协议的开源项目,被广泛集成到自动化构建、网络测试、网络数据采集以及其他网络相关的任务中,备受开发者和系统管理员青睐。
cURL在2023年10月11日下午紧急发布最新版本来修复前几日发现的高危安全漏洞,其中编号为CVE-2023-38545的漏洞是cURL客户端在处理SOCKS5协议时存在的堆内存溢出漏洞。
漏洞复现
Recurrence
悬镜供应链安全实验室第一时间对该漏洞进行分析和复现,当使用存在CVE-2023-38545漏洞的curl客户端或libcurl库请求攻击者的恶意socks代理服务器时,攻击者可通过socks5服务器返回非法的协议数据来远程触发该堆内存溢出漏洞,如果能成功利用该漏洞,受害者主机系统可能存在被攻击者远程执行任意代码的风险。
复现结果如下所示(测试版本curl 8.3.0):
使用curl客户端访问攻击者搭建的恶意socks代理服务器(socks5h://random.test:1080)
curl接收到socks代理服务器的响应数据时触发内存崩溃,通过gdb内存调试可以发现curl进程的合法数据内存被攻击者发送的恶意数据覆盖导致进程崩溃。
受影响版本
Affected Versions
CVE-2023-38545 socks协议内存溢出漏洞在libcurl 7.69.0被引入(https://github.com/curl/curl/commit/4a4b63daaa),在8.4.0版本中被修复,目前该漏洞只影响libcurl 7.69.0 ~ 8.3.0版本,不受漏洞影响的版本:libcurl < 7.69.0 和 >= 8.4.0。
漏洞补丁
Patch
cURL项目官方发布了CVE-2023-38545的漏洞补丁如下
https://github.com/curl/curl/commit/fb4415d8aee6c1
在修复补丁中,当cURL客户端发现socks5代理服务器返回的http重定向hostname长度大于255时,则直接抛出异常(SOCKS5: the destination hostname is too long to be resolved remotely by the proxy.)。
修复建议
Advice
禁止使用存在漏洞版本的curl客户端或libcurl库连接不信任的socks代理服务器
升级到最新版本8.4.0
*ps:可以关注下容器中cURL的默认版本
该漏洞利用难度较高,用户可酌情选择是否升级到最新版本
悬镜供应链安全实验室也将持续监测和挖掘未知的开源组件安全风险,并及时对相关风险进行分析披露。
参考链接:
https://curl.se/docs/CVE-2023-38545.html
关于“悬镜安全”
悬镜安全,起源于北京大学网络安全技术研究团队“XMIRROR”,创始人子芽。作为DevSecOps敏捷安全领导者,始终专注于以“代码疫苗”技术为内核,凭借原创专利级“全流程数字供应链安全赋能平台+敏捷安全工具链”的第三代DevSecOps智适应威胁管理体系,创新赋能金融、车联网、泛互联网、智能制造、通信及能源等行业用户,构筑起适应自身业务弹性发展、面向敏捷业务交付并引领未来架构演进的共生积极防御体系,持续守护中国数字供应链安全。了解更多信息请访问悬镜安全官网:www.xmirror.cn