近日,GitHub披露了一起开源软件供应链攻击事件。GitHub上的大量NetBeans代码库被恶意软件章鱼扫描器(Octopus Scanner)感染成为传染点,章鱼扫描器是专门为感染NetBeans项目而设计的后门。
根据Github公布的信息,章鱼扫描器影响了26个开源项目。
章鱼扫描器直接感染了Github上的开发工具,性质要比常见的将GitHub平台作为恶意软件C2服务器严重得多。
危险的章鱼
GitHub于3月9日收到一名独立安全研究人员的漏洞警告,称GitHub托管的一组代码库正在积极提供恶意软件服务。
随后的调查证实,章鱼扫描器恶意软件能够对NetBeans项目文件进行分类,然后将有效恶意负载嵌入GitHub项目文件并创建JAR文件。
受影响的GitHub代码库所有者很可能完全意识不到恶意活动的存在,并且清理恶意软件也是一个挑战,因为仅仅阻止或禁止项目维护(者)并不是一个好选择。
GitHub安全实验室正在研究如何从受感染的存储库中正确删除恶意软件,而不必关闭用户帐户。
GitHub安全专家 Alvaro Muñoz在一篇文章(https://securitylab.github.com/research/octopus-scanner-malware-open-source-supply-chain)中给出了详细技术分析,介绍GitHub安全团队如何克服困难剔除章鱼扫描器。
但是,关于此次攻击的许多问题仍然存在,尤其是为什么恶意软件作者针对NetBeans构建过程(一种相对不流行的Java IDE)进行攻击。
如果恶意软件开发人员花时间专门针对NetBeans实施此恶意软件,则意味着它可能是针对性攻击,或者他们可能也针对诸如Make,MsBuild,Gradle等开发系统实施了该恶意软件。尽管在分析时恶意软件C2服务器似乎并未处于活动状态,但受影响的存储库仍对GitHub用户构成了风险,他们可能会克隆和构建这些项目。
开源软件安全专家Sonatype的CTO Brian Fox评论说,章鱼扫描器如此危险的原因是它感染了开发人员工具,这些工具随后感染了他们正在从事的所有项目,从而影响了他们的团队或开源用户社区。
章鱼扫描器恶意软件证实了分析代码中二进制文件的重要性,而不仅仅依靠清单。章鱼扫描器如此危险的原因在于它具有感染项目中其他JAR文件的能力,因此开发人员最终使用“有毒”代码并将其分发给他们的团队或开放源代码用户社区。我们已经观测到20多次针对开源项目的一次性恶意代码注入尝试,但章鱼扫描器是一种新的攻击形式。这种攻击感染了开发人员工具,这些工具随后感染了他们正在从事的所有项目。
供应链攻击
GitHub Daily Security Lab的负责人Nico Waisman解释说:
章鱼扫描程序的目标是将后门插入NetBeans构建的人工制品中,以便攻击者随后可以将这些资源用作攻击的一部分。命令和控制服务器。
Waisman补充说:
没有证据表明26个开源项目实际上是恶意软件的攻击目标。该恶意软件的主要目标是感染开发人员的计算机并通过NetBeans项目传播。由于开发人员受到感染,他们无意中将后门代码上传到了自己的存储库。
软件依赖关系无处不在,因此使用数百甚至数千个开源依赖关系成为项目的正常现象。Waisman警告说,攻击者正在利用开源软件的这种依赖性进行攻击。
Waisman说:
尽管开源对开发人员来说很容易,但这也意味着对攻击者来说很容易。攻击者正在寻求供应链突破口,因为供应链攻击的影响范围更大。突破一点就能够访问多个目标。
威斯曼总结说,尽管像这样的供应链攻击令人恐惧,但它们仍然很少见。
Waisman指出:
供应链安全的主要问题是未修补的软件。对于攻击者而言,在依赖中利用未修补的已知漏洞要比在代码中插入新漏洞要容易得多。
对于开发人员而言,主要的挑战是了解项目的依赖关系,以及何时需要对其进行修补。在GitHub上,Dependency Graph可帮助您了解项目的依赖关系。