软件供应链安全之软件依赖替代攻击

前言

记录一下软件供应链攻击中软件依赖的替代攻击方法。

替代攻击

一般公司内都会开发一些内部依赖包,即项目的依赖中会即包括外部依赖包也包括内部依赖包。 公司内部的软件包索引系统一般会回源到上游系统( 公共包索引系统,比如 PyPI、npm,可能会使用多个上游,比如同时使用多个 mirror 和官方的索引系统)。

替代攻击指的是攻击者在公共包索引系统中注册一个跟内部包同名/拼写相似的软件包,然后等待有人安装这个同名/拼写相似的软件包:

  • 比如恶意包版本特别高,如果项目中依赖的内部包未指定特定版本,在安装依赖时可能会出现回源/上翻从而安装了恶意包
  • 内部索引系统或上游系统删了某个软件包/版本,但是实际上还有项目在用,这些项目可能会因此安装上恶意包
  • 内部索引系统异常,出现了非预期的内部包回源现象
  • 有些包的名字非常容易出现拼写错误,安装时如果不注意的话,就容易安装上非预期的恶意包
  • 有些软件在索引系统中使用的包名字跟代码里实际使用的名字不一样,攻击者注册了这个代码里的这个名字
  • 回源到某个上游系统时,上游系统在某一时间段出现过域名过期,然后被攻击者抢注了域名
  • 恶意包虽然被上游系统删除了,但是内部系统中有缓存
  • 使用的上游系统被入侵,攻击者替换了系统中的软件包
  • 依赖包的所有者的帐号被攻击者盗号,攻击者使用该帐号发布了恶意包

Comments