今天我们发布了Siderophile工具,它能帮助Rust开发者在代码库中寻找模糊测试目标。该工具会扫描crate依赖项,找出所有unsafe函数、表达式、特征方法等,并通过调用图追踪到使用这些不安全元素的源头函数。最终根据"危险系数"(使用不安全元素的数量)对函数进行排序。
Siderophile(ˈsidərəˌfɪl)——对金属铁有亲和力
这个工具诞生于我们接手一个大型Rust项目审计时。面对紧迫的时间要求,我们需要快速定位最需要模糊测试的代码区域。通过自动化识别高风险函数,Siderophile显著加速了我们的漏洞发现过程。现在我们将它开源以惠及整个社区。
示例输出
以下是我们在开发MLS加密协议实现crate——molasses上运行的结果:
危险系数 | 函数 |
---|---|
012 | molasses::crypto::hash::HashFunction::hash_serializable |
005 | molasses::crypto::hash::HashContext::feed_serializable |
003 | molasses::utils::derive_node_values |
| ...(其他高风险函数)|
可见主要风险集中在序列化和加密相关例程中,这些正是1.0版本发布前需要重点测试的区域。
局限性
当前版本无法保证捕获所有不安全代码,例如:无法检查宏或动态分发方法(unsafe标记仅作用于源码级别)。工具的易用性也有改进空间,某些crate上已发现误报情况。我们正在积极维护该项目,欢迎贡献者参与。
立即试用
Siderophile已发布在GitHub,包含详细使用说明。建议对所有Rust crate运行检测,并针对结果设置模糊测试。特别感谢cargo-geiger和rust-praezi项目的基础工作。
(原文末尾社交媒体分享链接和版权声明部分未翻译)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。