Rust生态系统遭遇精准供应链攻击

8月20日,Rust编程语言的基础设施面临一场隐蔽的供应链攻击。攻击者向官方包仓库Crates.io上传了三个广泛使用的代码包的恶意版本,其中arrayref库的受影响程度尤为关键——这个基础库被大约四分之三的Rust开发环境所依赖。

攻击手法:伪装依赖与隐藏后门

攻击者并未直接修改库的核心功能代码,而是采用了一种更隐蔽的方式:在包的依赖配置中,添加了一个拼写错误的proc-macro1依赖项,模仿了流行的proc-macro2库。这一细微改动足以让恶意代码通过常规的自动化测试和构建检查。

当开发者使用受污染的版本来编译自己的项目时,隐藏的后门便会激活。它在编译过程中秘密运行,专门窃取系统中的登录凭证和敏感信息。这意味着任何编译过这些版本的用户,其计算机本地存储的密码、API密钥乃至加密货币钱包密钥都可能已经泄露。

幕后黑手与基础设施关联

安全公司Wiz的研究人员分析了此次攻击的基础设施。他们发现,恶意代码使用的命令与控制服务器的通信路径,与已知的朝鲜黑客组织Sapphire Sleet和UNC1069的活动存在重叠。这些服务器共享同一张安全证书,并且都托管在美国服务商Hostwinds上。

这种基础设施的关联性,将此次供应链攻击与更广泛的国家级黑客行动联系了起来。

影响范围与响应

尽管恶意版本在上传仅86分钟后就被从仓库中删除,但在这一窗口期内,它们已经被大量下载和传播。由于arrayref等库是许多区块链开发工具链的基础组件,因此Solana和Ethereum生态系统的开发者面临的风险尤为突出。

  • 广泛影响:arrayref作为底层工具库,其污染直接影响了大量上游项目。
  • 快速响应:社区在发现异常后迅速下架了恶意包。
  • 信任危机:Rust官方团队初步评估认为,库的维护者本身并非恶意行为者,其个人设备或发布凭证很可能遭到了入侵。

这次事件再次凸显了开源软件供应链的脆弱性。即便是最基础、最受信任的组件,一旦维护环节失守,就可能危及整个生态系统。开发者需要更加警惕依赖项的更新,并考虑采用更严格的安全验证措施。