Rust 存储库 crates.io 中检测到恶意包 rustdecimal

Rust 语言的开发人员警告说,在 crates.io 存储库中已发现包含恶意代码的 rustdecimal 包。 该包基于合法的 rust_decimal 包,并使用名称相似性(类型抢注)进行分发,期望用户在从列表中搜索或选择模块时不会注意到缺少下划线。

值得注意的是,这一策略被证明是成功的,就下载量而言,虚构包仅略落后于原始包(rustdecimal 111 的下载量约为 1.23.1 万,原始 rust_decimal 113 的下载量为 1.23.1 万) 。 与此同时,大多数下载都是无害的克隆,不包含恶意代码。 恶意更改于 25 月 1.23.5 日在 rustdecimal 500 版本中添加,在发现问题并阻止该包之前,该版本被下载了约 XNUMX 次(假设该恶意版本的大部分下载是由机器人完成的),未用作对存储库中存在的其他包的依赖项(恶意包可能是对最终应用程序的依赖项)。

恶意更改包括添加新函数 Decimal::new,其实现包含用于从外部服务器下载并启动可执行文件的混淆代码。 调用该函数时,会检查环境变量 GITLAB_CI,如果设置,则从外部服务器下载文件 /tmp/git-updater.bin。 可下载的恶意处理程序支持在 Linux 和 macOS 上运行(不支持 Windows 平台)。

假设恶意功能将在持续集成系统测试期间执行。 在阻止 rustdecimal 后,crates.io 管理员分析了存储库的内容是否存在类似的恶意插入,但没有发现其他包中的问题。 建议基于 GitLab 平台的持续集成系统的所有者确保在其服务器上测试的项目在其依赖项中不使用 rustdecimal 包。

来源: opennet.ru

添加评论