Cargo-Geiger
摘要
cargo-geiger 是一个 Rust cargo 插件,用于列出 crate 及其依赖中不安全代码使用的统计信息,为审计提供输入。
查看缓存全文
缓存时间: 2026/06/20 17:16
geiger-rs/cargo-geiger
来源:https://github.com/geiger-rs/cargo-geiger cargo-geiger ☢️
CI (https://github.com/geiger-rs/cargo-geiger/actions/workflows/ci.yml) unsafe forbidden (https://github.com/rust-secure-code/safety-dance/) crates.io (https://crates.io/crates/cargo-geiger) Crates.io (https://crates.io/crates/cargo-geiger)
一个列出 Rust crate 及其所有依赖中 unsafe Rust 代码使用统计信息的工具。
这个 cargo 插件最初基于另外两个项目的代码:* 和 *
安装
尝试查找并使用系统范围内安装的 OpenSSL 库:
cargo install --locked cargo-geiger
或者,构建并将 OpenSSL 静态链接到 cargo-geiger 可执行文件中:
cargo install --locked cargo-geiger --features vendored-openssl
或者,可以从 GitHub releases 获取预构建的二进制发布版本 (https://github.com/geiger-rs/cargo-geiger/releases)。
用法
- 进入包含你想要分析的
Cargo.toml的目录。 cargo geiger
预期用途
此工具并非直接建议代码最终是否真正不安全。cargo-geiger 的目的是为审计提供统计输入,例如配合:
- cargo-crev (https://crates.io/crates/cargo-crev)
- safety-dance (https://github.com/rust-secure-code/safety-dance)
unsafe 的使用在某些情况下是微妙且必要的,使用它的任何动机都不在 cargo-geiger 的范围内。任何报告都需谨慎处理,这一点很重要:
- Reddit: The Stigma around Unsafe (https://www.reddit.com/r/rust/comments/y1u068/the_stigma_around_unsafe/)
- YouTube: Rust NYC: Jon Gjengset - Demystifying unsafe code (https://youtu.be/QAz-maaH0KM)
- Rust-lang: WG Unsafe Code Guidelines (https://github.com/rust-lang/unsafe-code-guidelines)
输出示例
示例输出
已知问题
- 参见问题跟踪器 (https://github.com/rust-secure-code/cargo-geiger/issues)。
库
Cargo Geiger 暴露了三个库:
cargo-geiger- 未版本化且高度不稳定的库,暴露了cargo-geiger二进制的内部实现。因此,该库中包含的任何函数都可能发生变化。cargo-geiger-serde- 包含可序列化报告类型的库geiger- 包含一些由 cargo-geiger 使用的解耦 cargo 组件的库
更新日志
参见 changelog。
为什么叫这个名字?
不安全代码,就像电离辐射一样,在某些情况下是不可避免的,并且应该被安全地封装!
相似文章
cargo-crap:在AI生成的Rust代码中发现未测试的复杂度
cargo-crap 是一个 Rust 工具,它使用 CRAP 指标来识别既复杂又测试不足的函数,帮助开发者管理 AI 生成代码中的风险。
Cargo-nextest: 比 cargo test 快 3 倍,每个测试隔离,一流的 CI 支持
Cargo-nextest 是 Rust 的下一代测试运行器,提供高达 3 倍的测试执行速度、每个测试的隔离以及一流的 CI 支持。
crates.io: 开发更新
最新的 crates.io 开发更新引入了用于审计依赖项的源代码查看器,开始通过本地用户名将账户与 GitHub 解耦,并为被 RustSec 标记为无人维护的 crate 添加了醒目的警告。
Cargo 的愿景
一篇博客文章,提出了改进 Cargo 的愿景,涵盖依赖管理、构建性能、适应性和维护等工作流程,并邀请社区提供意见。
使用 Cackle 提高 Rust 供应链攻击难度(2023)
David Lattimore 介绍了 Cackle,这是一个通过使用访问控制列表(ACL)限制依赖项行为来帮助防止 Rust 供应链攻击的工具,从而降低通过第三方 crate 引入恶意代码的风险。