cargo audit
检查您项目的依赖项是否存在已知的安全漏洞。
默认情况下,cargo audit
检查您的 Cargo.lock
文件,但它也可以扫描编译后的二进制文件。您可以使用以下命令安装 cargo-audit
并针对您的项目运行它
$ cargo install cargo-audit
$ cargo audit
cargo audit
和为其提供支持的 RustSec 漏洞数据库均由 Rust 安全代码工作组维护。
此版本的新特性
性能
cargo audit
现在在检查已撤回的 crate 时使用稀疏 crates.io 索引。这极大地加快了扫描过程,因为 cargo audit
不再需要下载整个 crates.io 索引,这可能需要几分钟的时间。
如果您运行的是 Rust 1.70 或更高版本,则默认使用稀疏索引,与 Cargo 本身相同。cargo audit
遵循 Cargo 关于使用稀疏索引的设置,如果您出于任何原因需要选择退出。
安全
cargo audit
之前在所有平台上都依赖 OpenSSL。在此版本中,我们已切换到 rustls - 一个高质量、内存安全的 Rust TLS 实现。
与 OpenSSL 历史上存在高危漏洞相比,rustls 具有出色的记录,并通过构造消除了整个类别的漏洞。它已经通过了独立的审计,并且获得了极高的评价;审计人员甚至指出他们“有幸对所展示软件的卓越质量印象深刻”。
由于 TLS 构成了 cargo audit
绝大部分的攻击面,因此我们非常高兴能够使用更安全的 TLS 实现!
兼容性
由于将我们的 git 实现从 libgit2 切换到 gitoxide,许多长期存在的问题得到解决
cargo audit
现在可以在 Alpine Linux 容器中运行.- 多个并行运行的
cargo audit
实例现在可以毫无问题地获取 Git 存储库. - 现在支持通过 SSH 访问 Git 存储库.
- 现在支持使用凭据助手访问私有存储库.
已知问题
有限的 CPU 架构支持
此版本不支持 x86 和 ARM 以外的 CPU 架构。这是因为 rustls 使用的加密库 ring 尚不支持其他 CPU 架构。
rustls 正在 添加对其他加密库的支持。如果近期没有为 rustls 提供可移植的加密库,我们将考虑添加对其他 TLS 实现的支持。
同时,我们建议在不常见的 CPU 架构上使用之前的版本。您也可以考虑使用其他读取 Cargo.lock
文件和 RustSec 漏洞数据库的工具,例如 Trivy、osv-scanner 或 Dependabot。
cargo audit fix
未转换
用于自动升级易受攻击依赖项的实验性子命令 cargo audit fix
已经存在一段时间,但默认情况下已禁用。在此版本中,它没有转换为使用 gitoxide 和 rustls,并且没有从任何这些改进中受益。
我们可能会在后续版本中默认启用此功能之前,从头开始重写此功能。
报告问题
由于 cargo audit
依赖的用于 git 协议和网络的库发生了重大变化,因此与之前的版本相比,行为上必然存在细微差异。
如果您在使用此最新版本时遇到问题,请在 Github 上向我们报告。谢谢!
致谢
感谢 Jake Shadle 在此版本中完成的大部分工作,以及创建了在 cargo audit
中启用稀疏注册表支持的 tame-index
crate。
感谢 Sebastian Thiel 创建 gitoxide
并对其进行改进以适应 cargo audit
的要求,以及帮助审查更改。