代码审计工具

一款多功能代码审计工具,提供安全审计、威胁建模、项目估算和报告生成等功能,适用于多种编程语言和AI编码环境。

  • by Artifex1
  • Zig
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 Artifex1/mcp-auditor

使用说明

LLM代码审计多工具

具备代码评估、安全审计和专业报告撰写的技能和CLI。适用于任何AI编码环境。

🎯 技能

技能是结构化的工作流程,引导人工智能完成多步骤过程。每项技能都包含特定任务的详细说明、阶段和最佳实践。

技能 目的 能力
🛡️ 安全审计员 使用Map&Probe方法进行交互式安全审计 Map(结构清单)→ 检查表(可选,特定于标准)→ 探测(每条路径漏洞分析)
🔍 威胁建模 代码级审计前的系统威胁枚举 分析→ 图表→ 攻击者→ 资产→ 威胁(STRIDE)→ 报告
📊 估计量 项目范围界定和工作量估算 全范围(发现、探索、指标、报告)或不同范围(发现,审查、报告)
🧠 设计挑战者 挑战过于复杂的设计 提出具有明确权衡的简化方案
📝 抄写员 报告撰写和发现生成 专业问题描述、报告介绍
🔬 sast管道 运行SAiST静态分析管道 初始化扫描→ 解决差距→ 运行规则(发货+自定义)
✏️ 规则编写 作者SAiST检测规则 范围、深度和映射规则类型与测试模式

技能如何发挥作用

技能提供了AI自主遵循的完整工作流程。当被调用时,AI会加载技能的协议,并根据需要使用可用的工具逐步执行。每种技能都可以通过其各自的斜线命令调用(例如。, /security-auditor, /estimator).

[!注意] 模型性能:不同AI模型的技能表现不同。根据您的需求,您可能需要调整模型以获得最佳结果:

  • 速度:较轻的型号(如Claude Haiku、Gemini Flash)执行速度更快,但可能会错过一些微妙的问题
  • 推理努力:功能更强大的模型(如Claude Sonnet/Opus、Gemini Pro)提供更深入的分析和更好的边缘情况检测
  • 彻底性:高层模型在探索和验证方面往往更全面
  • 冗长:具有较高推理能力的模型在思考过程中可以不那么冗长

尝试不同的模型,为您的用例找到合适的平衡点。


🧰 CLI工具

这 aud CLI通过树型AST解析提供结构化代码分析。所有命令都支持glob模式,用于一次分析多个文件(例如。, "src/**/*.sol").技能会自动调用这些命令作为其工作流程的一部分。默认情况下,输出使用TOON;通过 --json 对于JSON。

👀 aud peek

在不读取完整实现的情况下从源文件中提取函数和方法签名。这 估计量 技能使用peek快速理解代码库的API表面、存在什么函数、它们的参数、可见性和修饰符。这非常适合进行初步探索和构建不熟悉代码的心理图,而不需要读取完整的文件。

📏 aud metrics

计算代码度量:

  • 标准化代码行(nLOC):总行数减去空行、仅注释行和规范化为单行的多行构造(例如,跨越3行的函数签名计为1)。
  • 评论密度:有/是注释的行的百分比,表示文档覆盖范围。
  • 认知复杂度:通过按嵌套深度加权计算分支(if、for、while等)来衡量控制流的复杂性。深度嵌套的逻辑得分高于平面代码。
  • 预计小时数:根据nLOC和每种语言的基本费率审查时间估算。

这 估计量 skill使用此命令计算执行安全审计所需的时间。

📈 aud diff-metrics

指标仅限于在两个git ref之间更改的行。炮弹发射到 git diff -U0 -M 要提取每个文件中添加/删除的行范围,然后使用树状图解析每个更改的文件,并计算与 aud metrics --仅限于添加行 nloc_added 和 complexity_added,并删除了以下行 nloc_removed.

复杂性遵循SPEC-CLI§2.2语义:一个新的分支节点增加了 1 + branching_ancestors (包括已有的祖先)。非分支添加的行不会带来任何复杂性。

每行还发出 changed_functions --体重叠≥1的头树可调用对象的名称 幸存 添加行(空白/注释/仅测试更改不列出函数)。把这些直接喂进去 aud call-chains --root=<name> 用于范围分析。

这 估计量 技能使用此命令进行增量审计范围界定(在审查之前确定PR的大小)。

🔗 aud gaps

从源文件构建符号图(容器、可调用对象、变量、事件、修饰符、边),并输出未解析的结果 边缘间隙 --引用静态传递无法解析(未解析的调用者、接口分派、外部库)。按边缘类型(高/中/低)对差距进行优先级排序,以便进行代理分流。

支持 --resolutions=<file> 将手动解决的间隙应用CSV,将其提升到混凝土边缘。

⛓️ aud call-chains

通过完整的调用图跟踪从根函数(无传入调用边的可调用函数)到调用链,按根分组,排序最长。这 安全审计员 技能使用它来理解执行如何在系统中流动,并识别攻击面。

支持 --root=<name> 从特定功能开始,以及 --max-depth=<n> 以限制遍历深度。

📊 aud graph

构建和转储完整的符号图——所有节点(文件、容器、可调用对象、变量、修饰符、事件)和边(包含、调用、读取、写入、has_modifier、继承、发射、导入)。可用于直接检查图形结构。

🔬 aud run --规则引擎

构建符号图并对其运行基于Lua的检测规则。规则要么是内置的,要么是自定义的(.lua 文件)。

  • --rule=<ID> --仅运行特定的发货规则
  • --rule-path=<path> --从运行一个临时规则 .lua 文件
  • --rule-inline=<lua> --从内联Lua字符串运行一个特殊规则

结果包括规则元数据、置信度、位置和深度规则的可选执行路径。支持按置信度(问题、气味、指针)进行过滤。

ℹ️ aud info

列出语言配置详细信息(容器类型、可调用类型、变量类型、可见性提取、内置过滤器、度量配置)。有助于理解解析器对给定语言的看法。

🌐 支持的语言

Solidity·Rust·Go·Python·Cairo·Compact·Move·Noir·Tolk·Masm·C++·Java·JavaScript·TypeScript·TSX·Flow

📦 安装

通过克劳德代码插件

# 1. Start Claude Code
claude

# 2. Go to plugins
/plugin

# 3. Navigate to Marketplaces tab
# 4. <enter> on "+ Add Marketplace"
# 5. Paste this repo's link, <enter>
# 6. Hit <space> and <i>

通过Gemini CLI扩展

gemini extensions install <repository-url>

其他AI编码环境(游标、Codex、Windsurf等)

技能可以使用安装 技能CLI。这包括 aud CLI——所有平台的预构建二进制文件都随附 auditor-addon-cli 技能:

npx skills add <repository-url>

AI可以调用 aud 直接通过技能路径。有关手动使用,请参阅 auditor-addon-cli skill's skill.md获取添加说明 aud 到你的路径。

从源代码构建

需要 Zig 0.15+.

# Clone the repository
git clone <repository-url>
cd auditor-addon

# Native build
zig build

# Run tests
zig build test

# Cross-compile all platforms (macOS/Linux/Windows × arm64/x86_64)
./scripts/build-all.sh --release

🏗️ 建筑与设计

核心原则

  • 🧩 模块化:CLI、管道、语言配置和输出之间的明确分离
  • 🔌 可扩展:通过声明式添加新语言 LanguageConfig 结构
  • ⚡ 快速:单Zig二进制文件,零运行时依赖,树型语法编译
  • 🔬 Lua中的规则:检测规则在Lua中编写,在运行时加载

技术栈

  • 语言: --单一二进制文件,可交叉编译到所有平台
  • AST发动机: 树保姆 --编译成二进制文件的语法
  • 规则引擎: 路亚 --通过ziglua嵌入
  • 输出格式: 卡通 --面向令牌的对象表示法(或JSON)
  • CLI解析: 齐格拍手

关键项目文件