报告 #3023139 - FTP内存泄漏(含代理重用)
时间线
catenacyber 向 curl 提交报告
2025年3月5日 10:53 UTC
摘要
存在FTP协议的内存泄漏问题(参见复现步骤和堆栈跟踪)
通过使用 https://github.com/catenacyber/curl-fuzzer/tree/proxy 进行模糊测试发现(在修复了curl中的一个小内存泄漏后)
报告内容较为原始,不确定这是否只是一个不会导致安全漏洞的小泄漏。
看起来存在两个连接结构 struct connectdata *conn
,第一个通过 ftp_disconnect
清理,但第二个(来自代理重用的)即使在 ftp_setup_connection
中分配了资源也没有被清理。
不确定错误是在curl中,还是在curl_fuzzer中。
受影响版本
curl 8.13.0-DEV (x86_64-apple-darwin23.6.0) libcurl/8.13.0-DEV OpenSSL/1.0.2n zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 nghttp2/1.55.1 librtmp/2.3
发布日期:[未发布]
协议:dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp ws wss
特性:alt-svc AsynchDNS HSTS HTTP2 HTTPS-proxy IDN IPv6 Largefile libz NTLM PSL SSL threadsafe TLS-SRP UnixSockets
复现步骤
运行附带的模糊测试复现器,目标构建使用:
|
|
支持材料/参考
设置 FUZZ_VERBOSE=1
运行 ./curl_fuzzer_ftp ./minimized-from-5ab60dd6d34f13da35bcebf1f965f8dd6e409e88
的输出:
|
|
影响
附件
1个附件:F4114183: leak-ed83ae30011a435cabd4237bb9a99f920e6d18a8
讨论时间线
bagder (curl staff) 2025年3月5日 13:44 UTC
不幸的是,我现在似乎无法构建模糊测试器,因此无法运行此复现器。
您是在哪个提交上运行的?ftp.c的行号与当前master中的不匹配。
似乎是在某种错误情况下,account或alternative_to_user选项发生了泄漏。
我运行了测试280和294,进行了几次额外的 torture 测试,但没有发现泄漏。
bagder (curl staff) 2025年3月5日 13:47 UTC
无论如何,泄漏太小且不频繁,不足以被视为安全问题。这是一个"常规错误"(如果有的话)。
catenacyber 2025年3月5日 14:04 UTC
您是在哪个提交上运行的?
我运行的是 https://github.com/catenacyber/curl/tree/dummy
无论如何,泄漏太小且不频繁,不足以被视为安全问题。这是一个"常规错误"(如果有的话)。
我认为泄漏确实很小。
一旦 #3022041 被修复,我建议提交PR更新curl-fuzzer,以便oss-fuzz再次发送此问题。
bagder (curl staff) 2025年3月6日 20:14 UTC
我现在已经成功用模糊测试器复现了这个泄漏,正在尝试找出原因。
bagder (curl staff) 2025年3月7日 08:37 UTC
关闭报告并将状态更改为信息性。
这不是安全问题。我们可以在公共问题跟踪器中正常处理这个问题。
我刚为此提交了一个PR:https://github.com/curl/curl/pull/16604
感谢报告!
catenacyber 2025年3月7日 09:24 UTC
如预期的那样,感谢修复。
bagder (curl staff) 2025年7月1日 14:10 UTC
根据项目的透明政策,我们希望所有报告都被公开披露。
catenacyber 2025年7月1日 16:25 UTC
同意披露此报告。
报告披露 2025年7月1日 16:25 UTC
报告详情
报告时间:2025年3月5日 10:53 UTC
报告者:catenacyber
报告对象:curl
报告ID:#3023139
严重性:无 (0.0)
披露时间:2025年7月1日 16:25 UTC
弱点:无
CVE ID:无
赏金:无
账户详情:无