
软件供应链攻击的威胁加剧,近期有许多软件包发布平台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账号凭证,同时挖掘环境变量与配置文件,收集GitHub私人访问令牌(PAT),以及AWS、GCP、微软Azure等云服务的API密钥。