Siderophile:暴露Rust代码库中的不安全操作

Siderophile是一款帮助Rust开发者发现代码库中模糊测试目标的工具,它能追踪依赖项中的不安全函数并评估风险等级,提升代码审计效率。

今天我们发布了一款名为siderophile的工具,它能帮助Rust开发者在代码库中寻找模糊测试目标。该工具会扫描crate的所有依赖项,定位每个不安全函数、表达式、特质方法等,然后沿调用图追溯至使用这些不安全元素的源头函数,并按危险程度(badness)进行排序——函数使用的不安全元素越多,其危险等级就越高。

Siderophile([ˈsidərəˌfīl])——对金属铁有亲和力

我们在一次紧急代码审计任务中开发了这个工具。当时需要短时间内审查一个庞大的Rust代码库,通过siderophile自动化定位高风险函数,显著加速了漏洞发现过程。现在我们将这个工具开源。

示例输出

在MLS加密协议实现库molasses上运行的示例结果:

危险度 函数
012 molasses::crypto::hash::HashFunction::hash_serializable
005 molasses::crypto::hash::HashContext::feed_serializable
003 molasses::utils::derive_node_values

可见主要风险集中在序列化和加密相关例程中,这些将是1.0版本前的重点模糊测试对象。

局限性

当前版本无法检测宏和动态分发方法中的不安全操作,且在某些crate上存在误报。我们正在积极维护项目,欢迎贡献者参与改进。

立即试用

Siderophile已发布在GitHub,包含详细使用说明。建议对您的Rust crate运行该工具,并针对发现的高风险函数设置模糊测试。

最后感谢cargo-geiger和rust-praezi项目的先驱工作。本工具很大程度上基于他们的成果。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计