关于 rust-review
rust-review 是面向 Rust 项目的代码审计技能,供审查者检查安全性、正确性与惯用写法。它按审查范围渐进加载模块,并要求记录证据、验证发现。
主要功能
- 01所有权与错误处理检查
- 02并发模式审查
- 03unsafe 与 FFI 安全审计
- 04依赖漏洞检查
- 05数值转换与内存安全检查
- 06证据记录及发现验证
适用场景
- 01审查 Rust 代码变更
- 02检查 unsafe 代码块与 FFI 边界
- 03审计异步及同步并发模式
- 04检查 Cargo 依赖安全性
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ athola/ claude-night-market --skill rust-review安装后在 Claude Code 中输入/rust-review确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
modules/async-slop.mdbuiltin-preference.mdcargo-dependencies.mdcfg-test-misuse.mdcoercion-params.mdcollection-types.mdconcurrency-patterns.mdconversion-traits.mdduplicate-validators.mderror-handling.mderror-messages.mdfloat-equality.mdidiomatic-elision.mditerator-and-allocation-slop.mdmatch-wildcard.mdmem-forget-audit.mdmodel-specific-tells.mdmutable-static-audit.mdnative-type-modeling.mdnumeric-cast-safety.mdownership-analysis.mdrepr-packed-audit.mdsilent-returns.mdsql-injection.mdtest-slop.mdtransmute-audit.mdunsafe-audit.md详细介绍
Rust 审查工作流
面向专家级的 Rust 代码审计,重点关注安全性、正确性和惯用模式。
快速开始
/rust-review
验证: 使用 --help 标志运行命令,以确认其可用性。
适用场景
- 审查 Rust 代码变更
- 审计不安全代码块
- 分析并发模式
- 审查依赖项安全性
- 审查性能优化
不适用场景
- 不涉及 Rust 的通用代码审查——使用 unified-review
- 性能分析——使用 parseltongue:python-performance 模式
必需的 TodoWrite 项
rust-review:ownership-analysisrust-review:error-handlingrust-review:concurrencyrust-review:unsafe-auditrust-review:cargo-depsrust-review:native-modelingrust-review:idiomatic-elisionrust-review:coercion-paramsrust-review:conversion-traitsrust-review:numeric-cast-safetyrust-review:mutable-static-auditrust-review:match-wildcardrust-review:transmute-auditrust-review:float-equalityrust-review:mem-forget-auditrust-review:repr-packed-auditrust-review:evidence-logrust-review:findings-verified
渐进式加载
根据审查范围按需加载模块:
快速审查(所有权和错误):
- 参见
modules/ownership-analysis.md,了解借用和生命周期分析 - 参见
modules/error-handling.md,了解 Result/Option 模式
并发重点:
- 参见
modules/concurrency-patterns.md,了解异步和同步原语
安全审计:
- 参见
modules/unsafe-audit.md,了解不安全代码块文档 - 参见
modules/mutable-static-audit.md,了解static mut全局变量及其线程安全替代方案 - 参见
modules/numeric-cast-safety.md,了解会截断或损失精度的as转换 - 参见
modules/match-wildcard.md,了解会破坏枚举穷尽性的兜底分支 - 参见
modules/transmute-audit.md,了解不检查布局、直接重新解释字节的mem::transmute/transmute_copy调用 - 参见
modules/repr-packed-audit.md,了解字段借用会变成非对齐引用的#[repr(packed)]布局
正确性审计:
- 参见
modules/float-equality.md,了解与浮点数字面量进行==/!=比较的情况 - 参见
modules/mem-forget-audit.md,了解mem::forget导致的泄漏,以及对引用调用drop(&x)无效的情况
依赖项审查:
- 参见
modules/cargo-dependencies.md,了解漏洞扫描
惯用模式:
- 参见
modules/builtin-preference.md,了解转换 trait 和内置类型的优先选择 - 参见
modules/native-type-modeling.md,了解优先使用枚举而非基本类型、新类型模式、类型状态和派生排序 - 参见
modules/idiomatic-elision.md,了解生命周期省略、表达式式返回和显式的-> ()单元返回 - 参见
modules/coercion-params.md,了解会妨碍解引用强制转换的&String/&Vec<T>/&PathBuf参数(优先使用&str/&[T]/&Path) - 参见
modules/conversion-traits.md,了解应使用impl From而非impl Into的情况,以及被丢弃的try_into().unwrap()转换错误
核心工作流
- 所有权分析:检查借用、生命周期和克隆模式
- 错误处理:验证 Result/Option 的用法和错误传播
- 并发:审查异步模式和同步原语
- 不安全代码审计:记录不变量和 FFI 契约
- 依赖项:扫描漏洞和更新
- 证据日志:记录命令和发现
Rust 质量检查清单
安全性
- 所有不安全代码块均已添加 SAFETY 注释
- FFI 边界均已妥善封装
- 内存安全不变量均得到维护
- 不使用
static mut全局变量;共享状态使用OnceLock/LazyLock、 原子类型或Mutex/RwLock - 不使用
mem::transmute/transmute_copy;字节使用from_le_bytes/from_bits/bytemuck转换,指针使用.cast() - 借用
#[repr(packed)]字段前先复制出来(不得创建未对齐的引用) - 不使用
mem::forget泄漏资源(改用ManuallyDrop/作用域),也不使用无效的drop(&x)来丢弃引用 -
mlock/munlock调用:已验证 RLIMIT、确保页对齐并处理 ENOMEM
正确性
- 错误处理完整
- 并发模式安全可靠
- 将有损
as转换(长度截断、as u8/i8、as f32) 替换为TryFrom/From - 枚举匹配完整;不使用
_ => unreachable!()/panic!/{}兜底分支 - 浮点数比较使用容差,不与浮点数字面量进行精确的
==/!=比较 - 测试覆盖关键路径
性能
- 没有不必要的分配
- 优先借用而非克隆
- 异步操作不会阻塞
惯用法
- 已实现标准 trait
- 优先使用转换 trait,而非辅助函数
- 使用枚举表示字符串类型的值和布尔标志
- 在适用时,使用 newtype(私有字段 + 验证构造函数)或类型状态编码领域不变量
- 派生比较/排序 trait,而非手动编写
- 适用生命周期省略规则时省略生命周期;在路径中使用
'_ - 删除尾部的
return,改用尾表达式 - 删除显式的
-> ()单元返回类型(默认会省略) - 参数使用
&str/&[T]/&Path,而非&String/&Vec<T>/&PathBuf(解引用强制转换接受两者,因此切片更通用) - 转换实现
From/TryFrom,而非Into/TryInto;传播可失败转换的错误,而非调用unwrap() - 错误类型设计合理
- 文档完整
输出格式
## Summary
Rust audit findings
## Ownership Analysis
[borrowing and lifetime issues]
## Error Handling
[error patterns and issues]
## Concurrency
[async and sync patterns]
## Unsafe Audit
### [U1] file:line
- Invariants: [documented]
- Anchor: `verbatim source text at file:line`
- Risk: [assessment]
- Recommendation: [action]
## Native Type Modeling
[stringly-typed comparisons, boolean blindness, newtype/type-state notes]
## Idiomatic Elision
[needless lifetimes, trailing returns, explicit `-> ()` unit returns]
## Coercion Params
[`&String`/`&Vec<T>`/`&PathBuf` params that should be borrowed slices]
## Conversion Traits
[`impl Into` over `impl From`; discarded `try_into().unwrap()` errors]
## Numeric Cast Safety
[length-truncating, byte-narrowing, and f32 precision-losing `as` casts]
## Mutable Static Audit
[`static mut` globals and their thread-safe replacements]
## Match Wildcard
[catch-all `_ =>` arms that defeat enum exhaustiveness]
## Transmute Audit
[`mem::transmute`/`transmute_copy` calls and their typed replacements]
## Float Equality
[exact `==`/`!=` comparisons against float literals]
## Mem Forget Audit
[`mem::forget` leaks and no-op `drop(&x)` reference drops]
## Repr Packed Audit
[`#[repr(packed)]` layouts whose field borrows become unaligned]
## Dependencies
[cargo audit results]
## Recommendation
Approve / Approve with actions / Block
**验证:**运行带有 --help 标志的命令,以验证其是否可用。
确认发现有依据(rust-review:findings-verified)
将发现写入 .review/findings.json,运行引用验证器
(Skill(imbue:review-core) 第 5 步),删除验证器拒绝的发现,或将其标记为 UNVERIFIED。
退出标准
- 所有不安全代码块均已审计
- 并发模式均已验证
- 依赖项均已扫描
- 证据均已记录
- 行动项均已分配
- 每项报告的发现都带有
Location和逐字Anchor,并经citation_verifier.py确认(退出码为0);否则,未验证的发现已删除或标记为UNVERIFIED
评论
支持 Markdown