报告 #3295738 - 通过curl的href_extractor.c中废弃的GitHub用户名实现账户/仓库接管
摘要
curl仓库中的href_extractor.c示例(https://github.com/curl/curl/blob/master/docs/examples/href_extractor.c)引用了托管在https://github.com/arjunc77/htmlstreamparser的外部HTML解析器库。被引用的GitHub用户名(arjunc77)或仓库(htmlstreamparser)似乎已被废弃或删除,使我能够注册相同的用户名并托管同名仓库。这可能引发供应链攻击,恶意代码可能分发给依赖该引用库的用户,影响使用此示例构建的应用程序安全性。
描述
href_extractor.c文件作为curl项目示例代码的一部分,使用了来自https://github.com/arjunc77/htmlstreamparser的HTML流解析器。我发现GitHub用户名arjunc77或仓库htmlstreamparser已被废弃或删除,因为我能够注册相同的用户名并创建同名仓库。通过在此仓库中托管恶意版本的HTML解析器,攻击者可以危害那些基于curl文档中提供的链接下载并使用该库的系统。这尤其令人担忧,因为curl项目被广泛信任,开发者可能不会验证引用仓库的所有权或完整性。
重现步骤
- 访问curl仓库中的href_extractor.c文件:https://github.com/curl/curl/blob/master/docs/examples/href_extractor.c
- 注意文件中注释引用的HTML解析器链接:https://github.com/arjunc77/htmlstreamparser
- 验证arjunc77/htmlstreamparser仓库是否不再活跃或已被删除(因为我能够注册用户名arjunc77)
- 使用用户名arjunc77创建新的GitHub账户和名为htmlstreamparser的仓库
- 在https://github.com/arjunc77/htmlstreamparser托管包含恶意或修改代码的概念验证(PoC)仓库
- 开发者从href_extractor.c中引用的链接克隆或下载库时,将无意中使用恶意代码
概念验证
我注册了GitHub用户名arjunc77,并在https://github.com/arjunc77/htmlstreamparser创建了名为htmlstreamparser的仓库。我托管了一个PoC版本的HTML解析器,进行了简单修改(例如添加打印语句以演示对代码的控制)。当与href_extractor.c一起编译和运行时,修改后的代码执行,确认了恶意代码注入的可能性。PoC仓库仍可用于验证,但不包含有害代码。
参考资料
- 漏洞文件:https://github.com/curl/curl/blob/master/docs/examples/href_extractor.c
- PoC仓库:https://github.com/arjunc77/htmlstreamparser(为演示目的创建)
- 问题位置:图片 F4670348: image.png 168.48 KiB 放大 缩小 复制 下载
影响
由于供应链攻击的可能性,此漏洞的影响重大:
- 代码执行风险:遵循curl示例并从引用的GitHub链接下载HTML解析器的开发者可能无意中将恶意代码集成到其应用程序中。这可能导致任意代码执行、数据盗窃或进一步危害部署应用程序的系统。
- 信任利用:curl项目是一个广泛使用和信任的库,其文档被视为权威。托管在相同用户名下的恶意仓库可能利用这种信任,导致受损代码的广泛采用。
- 可扩展性:由于curl仓库公开可访问并被数百万开发者使用,单个受损链接可能影响众多项目,特别是那些自动拉取依赖项而不进行手动验证的项目。
- 声誉损害:利用此漏洞的成功攻击可能损害curl项目的声誉,因为用户可能将包含未验证链接视为安全疏忽。
时间线
- 5小时前:ks_karem77向curl提交报告
- 4小时前:bagder curl工作人员关闭报告并将状态更改为"不适用"(“这不是curl安全漏洞。示例在注释中包含了该链接。")
- 4小时前:bagder curl工作人员请求披露此报告(“根据项目透明政策,我们希望所有报告都被披露并公开。")
- 3小时前:ks_karem77同意披露
- 3小时前:bagder curl工作人员披露此报告
- 3小时前:ks_karem77询问此类错误(损坏的GitHub仓库链接等)是否超出curl政策范围
- 3小时前:bagder curl工作人员回复(“注释基本上不能是漏洞。即使该库被真实使用并且存在漏洞,那也是该库中的漏洞,而不是libcurl中的,因为那在libcurl之外。")
- 3小时前:ks_karem77请求澄清范围
- 3小时前:curl锁定此报告
报告详情
- 报告时间:2025年8月12日 10:36 UTC
- 报告者:ks_karem77
- 报告对象:curl
- 严重程度:中等(4 ~ 6.9)
- 披露时间:2025年8月12日 12:05 UTC
- 弱点:LLM05:供应链漏洞
- CVE ID:无
- 赏金:无
- 账户详情:无