锁定开发人员的恶意NPM组件攻击经常发生,其中大部分黑客都是通过假冒知名冒件的方式,使用极为相似的名称骗过开发人员,导致他们不慎下载恶意软件,但最近一波攻击行动引起软件开发圈的关注,原因是黑客先针对组件维护者下手,取得他们的NPM账号来发布新版组件。
根据安全新闻网站Bleeping Computer的报道,每周被下载超过3千万次的热门组件eslint-config-prettier,在上周末遭遇供应链攻击,组件维护人员JounQin遭受网络钓鱼攻击,导致他的NPM账号Token外流,攻击者得逞后,以他的名义在NPM组件库上架有问题的组件。
这起事故发现的过程,起因是7月18日有开发人员安装特定版本的eslint-config-prettier之后,计算机出现不寻常的行为,这些新版组件存在怪异的公用点,那就是维护者虽然在NPM存储库上架,却并未在GitHub项目更新对应的内容,这种情况随即引起开源软件社交媒体的注意。
其中一名开发者Dasa Paddock在GitHub存储库询问此事,指出NPM组件库已发布4个新版eslint-config-prettier,GitHub存储库却没有程序代码变更的记录。JounQin后续在GitHub这项组件项目的议题讨论,提出说明,导致未经授权的人士得到他的NPM账号Token,并用于发布有问题的版本。
JounQin公布钓鱼信的内容,提及对方要求他验证NPM账号,并指出虽然寄信者是support@npmjs.com,看似像来自NPM团队,信中的连接却连往非法域名npnjs“.”com。他坦承是疏忽造成,并表示已移除遭利滥用的Token,将会尽快发布新版处理。
究竟恶意版本的NPM组件会造成那些危害?安全新闻网站Bleeping Computer取得相关文件,发现组件里的安装脚本install.js内置恶意功能logDiskSpace,会试图滥用rundll32执行组件里node-gyp.dll,而此DLL文件是木马程序,目前VirusTotal旗下的72款杀毒引擎其中,有46款将其视为有害。
值得留意的是,攻击者疑似并非只对JounQin下手,因为恶意程序研究员Malware Utkonos于社交媒体网站X上透露,另一个名为got-fetch的组件,也存在有问题的文件crashreporter.dll,以及eslint-config-prettier被植入的恶意DLL文件,源自相同的恶意软件家族。对此,安全研究员Ax Sharma透露,got-fetch开发者获报后,于NPM组件库表明停止维护,并将GitHub存储库的内容进行封存。