cairo-vulnerability-scanner
作者 trailofbitscairo-vulnerability-scanner 会扫描 Cairo/StarkNet 智能合约中的六类关键问题,包括 felt252 算术错误、L1-L2 消息传递缺陷、地址转换 bug 以及签名重放等。这个 cairo-vulnerability-scanner 技能适用于 StarkNet 合约的 Security Audit 审查。
该技能得分 78/100,说明它是面向需要 Cairo/StarkNet 专属审计工作流的目录用户的一个扎实候选项。仓库提供了足够具体的漏洞模式和使用线索,能帮助代理更少依赖猜测地触发并应用它,比通用安全提示更实用;不过它在上手引导和执行说明方面仍有提升空间。
- 明确列出了面向 StarkNet/Cairo 合约、L1-L2 桥、签名校验和 L1 handler 的审计场景,便于正确触发使用。
- 正文内容充实且结构清晰,包含 6 种命名漏洞模式和清单式检测指导,为代理提供了可直接执行的抓手。
- 仓库证据包含代码块、仓库/文件引用,以及专门收录漏洞模式的资源文件,提升了操作清晰度和可信度。
- 没有安装命令或设置说明,目录用户需要自行推断如何激活或集成该技能。
- 支持材料只有一个资源文件,没有脚本或测试,因此在边缘场景或偏自动化的使用中,工作流可能不够完整。
cairo-vulnerability-scanner 技能概览
cairo-vulnerability-scanner 能做什么
cairo-vulnerability-scanner 技能可以帮助你审查 Cairo/StarkNet 合约中那些在通用 Solidity 式审计里很容易漏掉的平台特有安全问题。它重点覆盖六类关键模式,包括 felt252 算术错误、L1-L2 消息风险、地址转换问题以及签名重放等。
适合谁用
如果你在做 StarkNet 应用、桥接代码或 Cairo 合约逻辑的 Security Audit,就应该使用 cairo-vulnerability-scanner 技能。它最适合你已经拿到合约文件,并且希望在深入人工分析之前先做一次有针对性的漏洞初筛。
它的不同之处
它的价值不只是“扫漏洞”,而是“扫 Cairo 特有的漏洞”。这一点很重要,因为这个生态里很多故障都来自类型选择、跨层假设和处理器逻辑,而不是显眼的重入或通用访问控制问题。这个技能最强的场景,是你需要一份针对已知 Cairo 风险模式的快速、结构化检查清单。
如何使用 cairo-vulnerability-scanner 技能
安装并把范围对准正确目标
先使用 Trail of Bits skills package 里的 cairo-vulnerability-scanner install 流程,然后把它应用到你真正想审查的仓库或合约子集上。主要输入应当是 Cairo 源码,尤其是 .cairo 文件,以及任何与 StarkNet 行为相关的桥接、handler 或签名验证模块。
给它安全审计任务,而不是含糊的要求
高质量提示词要写明合约范围、信任边界和关注点。例如:“审计这个 Cairo StarkNet 模块,检查 L1 handler 误用、felt252 算术问题和签名重放风险。重点看外部可达函数和消息校验。” 这比“检查有没有漏洞”更有效,因为它会把扫描方向引到预期的六类模式上。
先读这些文件
先看 SKILL.md 了解预期工作流,再检查 resources/VULNERABILITY_PATTERNS.md,掌握具体的检测逻辑和缓解建议。如果仓库里只有一个支持文件,那在把技能跑到真实代码之前,优先读它。
用窄范围工作流
先从合约入口点开始:外部函数、构造函数,以及 #[l1_handler] 函数。然后检查余额相关算术、felt252、ContractAddress 和 EthAddress 之间的转换,以及任何接收合约外部消息或签名的逻辑。这个顺序正好符合 cairo-vulnerability-scanner 设计上快速发现高价值问题的方式。
cairo-vulnerability-scanner 技能 FAQ
这个技能适用于所有智能合约吗?
不适用。cairo-vulnerability-scanner 技能面向的是 Cairo 和 StarkNet 合约,而不是通用的 EVM 审计。如果你的代码库主要是 Solidity,或者是链下 Rust 服务,这个技能带来的价值会很有限。
我需要先很懂 Cairo 吗?
有基本了解会更好,但即使是刚入门、需要一个带引导的 Security Audit 起点的人,这个技能也依然有用。尤其当你已经知道应用流程,但需要帮助检查 Cairo 特有的失败模式时,它会特别有帮助。
它和普通提示词有什么不同?
普通提示词往往只能发现表层问题。cairo-vulnerability-scanner 技能提供了一套可重复使用的审查框架,用来覆盖已知的 StarkNet 弱点,这能减少漏检,也让不同合约之间的审计结果更容易对比。
什么时候不该用它?
不要把它当成生产上线时唯一的审查方式,也不要在仓库里根本没有 Cairo 合约时使用它。它是一个聚焦型扫描器,不是完整的形式化验证,也不能替代威胁建模。
如何改进 cairo-vulnerability-scanner 技能
提供会改变审计结论的合约上下文
最好的输入会写清合约角色、风险资产和跨层路径。例如:“这个桥接存款合约接收 L1 消息并在 StarkNet 上铸造资产;请检查重放、地址转换和 handler 校验。” 这比只列文件强得多,因为它告诉技能哪些漏洞模式最重要。
指明精确的数据类型和信任假设
如果你把驱动 Cairo 漏洞的类型和不变量也写进去,结果通常会更好:felt252 运算、余额存储、u256 转换、ContractAddress 处理,以及任何签名方案。如果合约依赖单调递增的 nonce、消息唯一性或有上限的金额,也要明确说明。
围绕首次发现继续迭代
如果第一轮结果显示可疑的算术问题或消息处理问题,可以再发起第二轮,只深挖这些位置,并要求它给出利用路径,而不只是现象描述。例如:“检查这两个函数是否存在重放或下溢可利用性,并给出最小修复方案。” 这样通常比原样重复跑一遍完整扫描,能得到更可执行的 cairo-vulnerability-scanner usage 结果。
只喂给它相关的仓库切片
把相关的 .cairo 文件单独摘出来,通常会比把一个混合语言的整个 monorepo 一起丢进去得到更好的输出。对于 cairo-vulnerability-scanner for Security Audit 来说,信号最高的输入是合约文件、handler 模块,以及任何会转换地址、签名或跨层载荷的辅助代码。
