软件供应链攻击的威胁加剧,近期有许多软件组件发布平台NPM的组件开发者遭到攻击,导致他们维护的组件遭到植入恶意软件的情况,但如今有安全企业也受害,而受到各界关注。
安全企业Socket指出,安全企业CrowdStrike用来发布NPM组件的账号crowdstrike-publisher出现遭到破坏的情况,他们研判很有可能是软件供应链攻击活动Shai-Hulud的一部分,因为黑客使用的恶意软件相同,且其中包含名为bundle.js的脚本。此脚本的主要用途,包含下载帐密扫描工具TruffleHog并执行,然后搜索受害计算机存放的凭证及云计算帐密、侦察开发者的CI帐密数据,并在特定的存储库创建未经授权的GitHub Actions工作流程,最终将前述提及的敏感数据外流。
在经过相关通报之后,受影响的组件NPM已经下架处理,总共约有500个组件受到影响,值得留意的是,不光是CrowdStrike的账号遭黑,还有Operato、Things Factory等多个企业组织也遇害。Socket根据他们找到的有效酬载,指出该恶意程序会写入GitHub Actions工作流程文件,文件名是shai-hulud-workflow.yml。另一方面,他们也在程序代码存储库GitHub找到近700个号称能用来缓解Shai-Hulud的存储库,究竟这些存储库的功能为何,Socket根据存储库的命名及时间,推测有可能是用来维护自动化的攻击流程。
针对这起攻击事故的发现,Socket起初在世界协调时间(UTC)9月14日傍晚找到7个被感染的组件,后来在16号凌晨发现有CrowdStrike的组件遭到感染。
特别的是,Socket提到在这两天的时间里,黑客打造7个版本的恶意程序,而且这些都是能自我散播的蠕虫。这些版本的差异在于,黑客逐步提升活动的隐匿程度及感染效率。
该恶意软件主要的功能,就是自动窃取帐密数据,然后用于将工作流程植入其他存储库,从而达到自我传播的目的。在进行感染的过程里,此恶意程序会自动篡改并重新发布组件。
一旦恶意程序成功窃得帐密数据,就有机会取得写入及重新发布的能力,并将受害组件解开,置换或创建恶意的bundle.js文件,并篡改package.json加入预先安装(postinstall)的脚本。下游用户若是下载并安装这些有问题的NPM组件,恶意的预先安装脚本或是注入在bundle.js的程序代码就会执行,并在他们的计算机进行侦察,进一步挖掘其他存储库及组件的相关帐密数据。
值得留意的是,Socket认为攻击者可能还有打造其他版本的恶意程序,因为他们看到新版本出现后,有旧版程序再度出现感染的情况,原因是恶意软件刚好有其他的账号可以继续感染。这种情况发生的原因,主要是GitHub Actions的工作流程虽然会触发事件,但并非连续触发,使得恶意软件感染时间会出现明显的间隔。因此,Socket认为,第7版很有可能不是黑客使用的最新恶意软件。
针对这波软件供应链攻击,其他安全企业也公布相关发现,例如,Wiz推测很有可能与8月下旬的Nx供应链攻击有关,Palo Alto Networks确认有超过180个NPM组件受到影响,并指出蠕虫程序会通过.npmrc窃取NPM账号的凭证,并挖掘环境变量与组态设置文件,搜括GitHun私人访问凭证(PAT),以及AWS、GCP、微软Azure等云计算服务的API密钥。