1. 基本信息
| 项目 | 内容 |
|---|---|
| 名称 | c-review-trailofbits-skills |
| 项目自述名称 | c-review |
| 作者/维护者 | Paweł Płatek(Trail of Bits) |
| 来源链接 | https://github.com/trailofbits/skills/tree/main/plugins/c-review |
| 许可证 | CC-BY-SA-4.0(数据来自 GitHub API) |
| GitHub Stars | 7,074(数据来自 GitHub API;为 trailofbits/skills 整个合集仓库的数字,不代表本技能自身热度) |
| Forks | 605(数据来自 GitHub API) |
| 最新版本 | 2.0.1(数据来自插件清单 plugin.json) |
| 安装方式 | Claude Code 插件市场:/plugin marketplace add trailofbits/skills 后安装 c-review 插件 |
2. 功能介绍与亮点
c-review 对 C/C++ 用户态代码做安全审查,找内存越界、整数溢出、竞态条件、类型混淆等漏洞, 覆盖 Linux/macOS 守护进程与 Windows 服务,不覆盖内核态代码与托管语言。
核心机制是按位置分片、按问题清单覆盖,而非常见的“按漏洞类型分工”:
- 切分:解析器把代码切成“单元”(一个函数或长函数的一段,单元不超过 150 行), 每一行代码都落在且只落在一个单元里,每个单元只交给一个审查代理。
- 固定十问:每个代理对手中的每个单元依次核对边界检查、整数宽度与符号、内存分配/释放
配对、
sizeof运算、字符串终止符、返回值检查、调用者假设、禁用 API、宏契约、初始化—— 十个问题里只问代码里真实存在对应结构的那些(没有写操作就不问边界)。 - 可核验的覆盖记录:解析器会先数出“这个单元里有几处写操作、几次
malloc”,只告诉代理 数量、不给行号,代理必须自己去读代码找到它们并逐条写下检查结果。运行结束后check_ledger.py会用解析器重新推导一遍这些点位,核对代理的记录是否名实相符—— 跳过某个函数、或对着十二处写操作只说“没问题”却一处没点名,都会被判定覆盖不合格, 整份报告标注为“已生成但未核实”而非直接当作完工。
亮点:
- 覆盖声明可验证:覆盖率不是“代理说自己读过”,而是“解析器分派过、且有据可查”, 报告用“应答检查项/需答检查项”的比例呈现,而不是笼统的“函数已过目”。
- 审查代理无 Shell 权限:负责发现漏洞的工作代理工具集只有 Read/Grep/Glob/Write, 刻意不给 Bash——因为覆盖记录所需的“这个函数有几处写操作”本身就能被脚本直接算出来, 若代理有 Shell 权限就可能绕过阅读代码直接套用答案,作者称该绕过路径已被实测验证存在。
- 五阶段流水线(发现→审查→扫尾→去重→汇总),中等规模目标约调用 8–10 个子代理,
产出 REPORT.md、SARIF 2.1.0(可接 CI)、覆盖率证据
ledger-gate.json等完整证据链。 - 正文明确写出“没有独立的假阳性复核阶段”,每条发现的严重级别只是发现者本人的判断, 这一诚实声明本身也降低了使用者被误导的风险。
3. 适用场景
所属分类:安全与合规(产出是一份带覆盖率证据的 C/C++ 安全漏洞审计报告,属安全审计范畴)。
适用人群与场景:
- 维护 C/C++ 编写的网络服务、系统守护进程或 Windows 服务的团队,在合并前排查内存安全与 整数溢出问题;
- 安全审计人员需要一份“覆盖率可核验”而非“代理自称读过”的审查证据,用于合规留痕;
- CI/CD 流水线接入 SARIF 格式的结构化发现,作为提交前的安全门禁;
- 接手遗留 C/C++ 代码库、需要系统性摸底内存安全现状的场景。
4. 跨 Agent 兼容性
| Agent | 结论 | 依据 |
|---|---|---|
| Claude Code | ✅ 原生支持 | 官方发布的 Claude Code 插件市场技能;核心执行依赖 Workflow(多代理编排)工具调用,为 Claude Code 内置能力 |
| Codex | ⚠️ 需适配 | 仓库 README 明确“Codex supports Claude plugin marketplaces directly”,可用 codex plugin marketplace add 安装该插件市场;但本技能的实际执行需调用 Workflow 编排整个五阶段流水线,未见文档说明 Codex 环境中有对应实现,安装成功不等于流程可跑通 |
| OpenClaw | ❓ 未验证 | 未找到官方兼容性声明;同样受 Workflow 工具依赖限制 |
| Hermes Agent | ❓ 未验证 | 未找到官方兼容性声明;同样受 Workflow 工具依赖限制 |
5. 推荐理由
C/C++ 的内存安全审查历来依赖审查者的经验与耐心,容易在大代码库里漏看。c-review 把“审查过 没有”从一句自我声明变成可用解析器复核的记录——覆盖率数字背后是真实存在的代码结构,而不是 代理自我报告的信心。同时诚实标注“无假阳性复核”,让使用者清楚该在哪一步补充人工判断, 是索引内目前唯一一个专门针对 C/C++ 内存安全、且自带可核验覆盖机制的审查技能。
6. 评分
| 维度 | 分数 | 说明 |
|---|---|---|
| 受欢迎程度 | 7 | Trail of Bits 是公认的一线安全研究机构,长期为大型开源基金会与商业公司提供安全审计与工具,其发布的 Semgrep 规则、YARA 规则集等已是业界常用参考;未查到本子技能自身的独立第三方讨论或采用数据 |
| 可用性 | 9 | 安装后一条斜杠命令 /c-review:c-review 即可触发;README、SKILL.md、AGENTS.md 文档极完整,附架构图与已知局限说明;仓库对该插件路径最近一次改动为 2026-08-24(约三周前),维护活跃;无付费依赖,仅需 uv 在 PATH 中 |
| 安全性 | 8 | 检查清单:①执行本地 Python 脚本与 uv run,权限范围明确且有文档说明;②无联网外发,纯本地代码分析;③不涉及 API key/凭据;④正文与脚本未见可疑指令,反而主动限制审查代理的工具权限以防止其绕过覆盖检查;⑤作者为公认安全机构,无信誉问题;⑥License 明确(CC-BY-SA-4.0);⑦近期持续维护 |
综合评分:8.0(三项均值)
7. 跟同类 Skills 相比的优势
| 技能 | 定位 | 与本技能的差异 |
|---|---|---|
| modern-cpp-trailofbits-skills | C++ 现代化编码与惯用法指南 | 关注代码风格与语言特性的正确使用,不专门针对内存安全漏洞做逐单元审查 |
| static-analysis-trailofbits-skills | 通用静态分析工具箱(CodeQL、Semgrep、SARIF 解析),面向广谱代码缺陷、多语言 | 依赖既有规则库覆盖已知模式,本技能是逐单元人工式审查搭配可核验覆盖记录,能发现规则库未命中的定制场景 |
| differential-review-trailofbits-skills | 审查一次代码变更(diff)本身是否引入问题 | 面向“这次改动有没有问题”,本技能面向“整个代码库现状如何”,审查范围与触发时机不同 |
8. 用户评价
该技能目前在第三方平台尚无具名用户评价;检索到的结果均为技能聚合站点(如 atskills.one、 claudemarketplaces.com 等)对仓库内容的自动转载,非独立使用反馈。
9. 其他补充
仓库内该插件目录下附带完整测试套件(tests/),且体量大于其功能代码本身,作者说明这是刻意
让“实际发布的内容”与“仅用于证明其可工作的内容”保持分离。
10. 安装使用方式
Claude Code(插件市场):
/plugin marketplace add trailofbits/skills
/plugin add c-review@trailofbits
安装后需确保 uv 已在 PATH 中(该技能用 uv run 执行两个 Python 阶段)。触发方式为显式调用
/c-review:c-review,随后按提示确认威胁模型(远程/本地未授权/两者)、审查范围子目录等参数,
即会自动调用 Workflow 启动五阶段流水线;产出位于当前目录下 .c-review-results/<时间戳>/。
11. 注意事项
- 无假阳性复核阶段:所有发现的严重级别均为发现者本人判断,
judgeRan恒为false, 报告需要使用者自行甄别,不能当作已裁定的最终结论。 - 不覆盖内核态与托管语言:内核驱动/模块,以及 Java、C#、Python、Go、Rust 等托管语言均 不在覆盖范围内,误用会得到不适用的结果。
- 强依赖
uv与 Claude Code 的Workflow工具:缺少uv时两个 Python 阶段无法运行; 离开 Claude Code 环境(或等效的多代理编排工具),流水线本身无法启动。 - 产出物在覆盖检查未通过时会标注“已生成但未核实”:使用者需要读取
ledger-gate.json确认覆盖情况,不能只看REPORT.md里的漏洞列表。