攻防视角看开源组件投毒

admin 2025年6月15日02:24:28评论20 views字数 961阅读3分12秒阅读模式
01
背景

近年来,NPM、PyPI等开源组件仓库是投毒的重灾区,今天从攻防的视简述攻击者是如何针对性的对某个目标进行投毒,企业又该如何进行防范。

02
投毒手法

攻击者最常用的投毒手法为命名混淆组件抢注,区别如下:

1. 命名混淆

攻击者在信息收集阶段,得知目标企业使用的组件清单,攻击者在官方仓库发布命名相似的投毒组件,例如投毒包mysql-connector-py模仿mysql-connector-python,当目标企业用户在安装组件的时候不小心拼写错误则会直接中招。

2. 组件抢注

如果攻击者的信息收集能力比较牛p,获取了目标企业私有仓库中的组件清单(一方包),并且目标企业并没有在官方仓库中进行注册,那么攻击者可直接在官方仓库中提前注册同名的恶意组件,当目标企业用户未正确配置私有源,则会直接从官方仓库拉取到攻击者发布的投毒包。

3. 还有MavenGate攻击(针对Maven组件)

原理:攻击者收集目标企业过期域名注册的Maven组件,通过接管域名进而接管Maven仓库中的GroupID对应的Maven组件。

例如某家公司的域名 sub.compony123.com 注册的Maven的GroupID为 com.compony123.sub,如果该域名过期了,攻击者可购买该域名,并接管对应的 com.compony123.sub 对应的Maven组件。

03
投毒者如何获取目标企业的组件清单

1. 公开的项目依赖(适用于命名混淆)

从Github/Gitee等平台,从目标企业公开项目中的依赖文件中获取依赖信息:

攻防视角看开源组件投毒

2. 目标企业的产品、域名等信息(适用于组件抢注)

过企业官网等渠道,获取企业的产品名、域名/子域名、公司名、业务系统、招聘信息等信息,这些名称有可能是企业内部组件的命名,示例:

攻防视角看开源组件投毒
04
企业如何防范?

针对不同语言仓库,有不同的投毒防范措施:

1. 强制使用私有源仓库拉取内部组件

2. 提前将内部组件名、组织名、GroupID等在公开仓库上进行抢注

3. 建立沙箱环境,同步到私有源之前针对组件进行检测

4. 建立应急下架流程,订阅实时投毒情报,第一时间将投毒组件进行隔离

5. 在NPM、Nuget等支持作用域的平台上使用私有命名空间(如@compony/xxx)隔离一方包和三方包。

原文始发于微信公众号(KeepHack1ng):攻防视角看开源组件投毒

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月15日02:24:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   攻防视角看开源组件投毒https://cn-sec.com/archives/4163903.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息