通过废弃GitHub用户名实现curl库接管攻击

本文详细分析了curl项目中href_extractor.c示例文件存在的安全风险:由于引用的GitHub用户名和仓库被废弃,攻击者可注册同名账户注入恶意代码,导致供应链攻击,影响依赖该示例的应用程序安全。

报告 #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项目被广泛信任,开发者可能不会验证引用仓库的所有权或完整性。

重现步骤

  1. 访问curl仓库中的href_extractor.c文件:https://github.com/curl/curl/blob/master/docs/examples/href_extractor.c
  2. 注意文件中注释引用的HTML解析器链接:https://github.com/arjunc77/htmlstreamparser
  3. 验证arjunc77/htmlstreamparser仓库是否不再活跃或已被删除(因为我能够注册用户名arjunc77)
  4. 使用用户名arjunc77创建新的GitHub账户和名为htmlstreamparser的仓库
  5. 在https://github.com/arjunc77/htmlstreamparser托管包含恶意或修改代码的概念验证(PoC)仓库
  6. 开发者从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:无
  • 赏金:无
  • 账户详情:无
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计