SuperAPI AI 工具集

rust-unsafe-boundary-audit

编程与开发

查看项目

更新于 10-15 17:29

技能介绍

用途:当 Rust 改动、crate 或仓库需要针对 unsafe 块、裸指针、布局假设与 FFI 边界做专项审计时使用。目标不是禁止 unsafe,而是让每个不安全操作局部化、被论证、尽可能被机械手段保护,并有测试或工具覆盖其契约。

主要能力:把每个 unsafe 块视为证明义务,要求说明维持正确性的不变量、由谁维护、如何阻止非法调用者到达该操作;审计 FFI 边界的所有权、生命周期、可空性、线程、分配器、布局与 panic/unwind 行为;优先缩小 unsafe 面而不是只加注释;不因工具通过就批准 unsafe 代码;给出具体到操作、可失败不变量、现实失败模式和最小修复方案的发现。

使用方式:先只审查被审项目及其仓库内契约,包括 Cargo.toml、workspace 布局、feature flags、构建脚本与目标配置,含 unsafe、extern、repr(C)、裸指针、手动分配、内联汇编、生成绑定与平台特定代码的模块,包装 unsafe 内部的公开 API,以及测试、fuzz 目标、Miri 配置、sanitizer 任务、Clippy 设置和 CI 工作流。用检索命令建立边界清单,例如 rg -n '\bunsafe\b|extern[[:space:]]+"C"|no_mangle|export_name|repr(C)|repr(transparent)|from_raw|into_raw|as_ptr|as_mut_ptr|NonNull|MaybeUninit|ManuallyDrop|transmute|slice::from_raw_parts|CStr::from_ptr|CString::from_raw|libc::|windows_sys::|asm!' .。按站点、操作、所需不变量、执行者、证据、结论逐项记录,并按边界去重。

验证证据可包括 cargo test、cargo test --all-features、cargo miri test、地址/泄漏/线程 sanitizer、fuzz 或属性测试、ABI/布局断言以及针对空指针、非法长度、双重释放、回调误用、panic 抑制和所有权不匹配的负向测试;需记录实际运行的命令、平台、重要 feature flags 与被跳过的测试。报告结构包括范围、unsafe 清单、发现、缩小表面计划、验证证据、残余风险与结论。限制:不提供具体修复代码、不编造工具行为;若工具不可运行需说明原因并用定向源码审查或更窄测试补足。