网络安全研究人员近日发现了一起针对Go生态系统的软件供应链攻击,攻击者通过一个恶意包,能够在受感染的系统中实现远程访问。
恶意包的伪装与传播
根据Socket的分析,这个名为github.com/boltdb-go/bolt的恶意包是对合法BoltDB数据库模块(github.com/boltdb/bolt)的“拼写错误劫持”(typosquat)。恶意版本(1.3.1)于2021年11月发布到GitHub,随后被Go Module Mirror服务无限期缓存。
安全研究员Kirill Boychenko在分析中指出:“一旦安装,这个被植入后门的包会授予攻击者对受感染系统的远程访问权限,使其能够执行任意命令。”Socket表示,这是恶意行为者滥用Go Module Mirror无限期缓存模块功能的最早案例之一,目的是诱使用户下载恶意包。
攻击者的欺骗手段
为了掩盖恶意行为,攻击者随后修改了源代码库中的Git标签,将其重定向到良性版本。这种欺骗手段确保了手动审查GitHub仓库时不会发现任何恶意内容,而缓存机制则意味着使用Go CLI安装该包的开发者会继续下载被植入后门的版本。
Boychenko解释道:“一旦模块版本被缓存,它就可以通过Go Module Proxy访问,即使原始源代码后来被修改。虽然这种设计对合法用例有益,但攻击者利用它来持续分发恶意代码,尽管仓库后续发生了变化。”
安全建议与相关案例
Boychenko提醒道:“不可变模块既提供了安全优势,也可能成为滥用的途径。开发者和安全团队应监控那些利用缓存模块版本来逃避检测的攻击。”
与此同时,Cycode详细披露了三个恶意npm包——serve-static-corell、openssl-node和next-refresh-token。这些包包含混淆代码,用于收集系统元数据并执行远程服务器(“8.152.163[.]60”)在受感染主机上发出的任意命令。
通过以上分析可以看出,软件供应链攻击正变得越来越复杂,开发者和安全团队需要更加警惕,尤其是在使用第三方依赖时,应加强审查和监控,以防止类似攻击的发生。