【译】引入“可审计(auditable)”:审计Rust二进制在生产中已知的缺陷或漏洞

1,341 阅读2分钟

Rust由于其内存安全保证,在编写安全性至关重要的程序方面前景很好。但是,尽管Rust crates中的漏洞较为少见,但是仍然存在,并且Rust当前缺少处理他们的工具。

例如,如果你运行一个存在漏洞的Linux发行版,它会对你进行提示,你甚至可以选择进行自动安全更新。Cargo不仅没有安全更新的基础设施,它甚至都不知道是哪些库或哪个库编译了一个二进制,所以就没办法检查你的系统是否存在漏洞。

我以及开始着手准备解决这个问题。

今天我很高兴宣布auditable这个crate的最初发布。它将依赖关系树嵌入到编译后的可执行程序,因此你可以检查在构建过程中使用了哪个crate。主要动机是为了能够回答 “我们在生产中实际运行的Rust二进制文件是否有任何已知的漏洞?”甚至可以让像云提供商这样的第三方来自动完成这件事。

我们提供了处理这些信息的crate[1],你可以通过它轻松构建自己的工具,还有一个转换器可以转为Cargo.lock的形式以便于兼容已有的工具。这些信息以及可以和cargo-audit[2]一起使用,见这里[3]的例子。

demo以及更多内部信息请看这个仓库[4],包括像二进制碰撞这样的经常被问到的问题[5]

最终的目标是在 Cargo 中集成这个功能,并在对可执行文件大小没有严格限制的所有平台上默认启用。在这里[6]可以找到一份尚未合并的RFC。现在,主要的阻碍因素是:

  1. rustc中的这个缺陷[7]阻碍了集成到Cargo中的正确实现

  2. 在稳定之前,我们需要积累一些数据格式的经验

如果你正在运行生产中的 Rust 工作负载,并且希望能够审计它们的安全漏洞,请与我联系。我很乐意协助在现实世界的环境中部署使用的auditable,以消除这些缺陷。

注:本文翻译自auditable作者在reddit上发布的一个主题帖子,下面还有一些讨论,详见:https://www.reddit.com/r/rust/comments/iotx5u/introducing_auditable_audit_rust_binaries_for/

参考资料

[1]

crate: http://docs.rs/auditable_extract/

[2]

cargo-audit: https://github.com/RustSec/cargo-audit

[3]

这里: https://github.com/Shnatsel/rust-audit#demo

[4]

仓库: https://github.com/Shnatsel/rust-audit

[5]

经常被问到的问题: https://github.com/Shnatsel/rust-audit#faq

[6]

这里: https://github.com/rust-lang/rfcs/pull/2801

[7]

rustc中的这个缺陷: https://github.com/rust-lang/rust/issues/47384

本文禁止转载,谢谢配合!! !欢迎关注我的微信公众号: Rust碎碎念

Rust碎碎念
Rust碎碎念