mcpField
S
security-audit

security-audit

github.com/xgent-ai安全194 次安装今天更新
代码仓库

关于 security-audit

security-audit 是用于检查代码库安全漏洞的审查技能。它跨文件追踪数据流、复核发现以筛除误报、标注严重程度,并提出由人工审阅的补丁,不会自动应用。

主要功能

  1. 01扫描代码库或变更范围
  2. 02审计依赖项和机密信息
  3. 03跨文件数据流分析
  4. 04标注严重程度与置信度
  5. 05提出供人工审阅的补丁

适用场景

  1. 01提交或部署前审查代码
  2. 02调查注入与访问控制风险
  3. 03检查依赖项和代码中的暴露机密

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/xgent-ai/skills --skill security-audit

安装后在 Claude Code 中输入/security-audit确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
language-patterns.md
report-format.md
secret-patterns.md
vuln-categories.md
vulnerable-packages.md

详细介绍

安全审查

一款由 AI 驱动的安全扫描工具,能够像人类安全研究员一样分析你的代码库——追踪数据流、理解组件交互,并发现模式匹配工具会漏掉的漏洞。

何时使用此技能

在请求涉及以下内容时使用此技能:

  • 扫描代码库或文件中的安全漏洞
  • 执行安全审查或漏洞检查
  • 在提交或部署前检查已更改的代码——尤其是身份验证、API、数据库、依赖项或配置更改
  • 检查 SQL 注入、XSS、命令注入或其他注入漏洞
  • 查找代码中暴露的 API 密钥、硬编码机密或凭据
  • 审计依赖项是否存在已知 CVE
  • 审查身份验证、授权或访问控制逻辑
  • 检测不安全的加密方式或弱随机数
  • 执行数据流分析,追踪用户输入到危险接收点的路径
  • 任何类似“我的代码安全吗?”、“扫描这个文件”或“检查我的仓库是否有漏洞”的请求
  • 运行 /security-review 或 /security-review <path>

此技能的工作方式

与通过匹配模式工作的传统静态分析工具不同,此技能会:

  1. 像安全研究员一样阅读代码——理解上下文、意图和数据流
  2. 跨文件追踪——跟踪用户输入在应用中的流转
  3. 自行验证发现——重新检查每项结果,以过滤误报
  4. 评定严重程度——CRITICAL / HIGH / MEDIUM / LOW / INFO
  5. 提出有针对性的补丁——每项发现都包含具体修复方案
  6. 要求人工批准——不会自动应用任何更改;始终由你先行审查

执行工作流

每次都按顺序执行以下步骤:

步骤 1 — 确定范围

确定要扫描的内容:

  • 如果提供了路径(/security-review src/auth/),则只扫描该范围
  • 如果请求涉及更改(差异、暂存文件、提交前或部署前检查),则将范围限定为已更改的文件(git diff、git diff --staged)。仍需阅读这些文件调用的代码或调用它们的代码周边内容——更改通常只有结合上下文才会构成可利用漏洞。只有依赖项清单或锁定文件发生更改时,才运行步骤 2
  • 如果未提供路径,则从项目根目录开始扫描整个项目
  • 确定所用的语言和框架(检查 package.json、requirements.txt、go.mod、Cargo.toml、pom.xml、Gemfile、composer.json 等)
  • 阅读 references/language-patterns.md,加载特定语言的漏洞模式
步骤 2 — 依赖项审计

扫描源代码前,先审计依赖项(快速排查):

  • Node.js:检查 package.json + package-lock.json 中是否有已知的易受攻击软件包
  • Python:检查 requirements.txt / pyproject.toml / Pipfile
  • Java:检查 pom.xml / build.gradle
  • Ruby:检查 Gemfile.lock
  • Rust:检查 Cargo.toml
  • Go:检查 go.sum
  • 如果可用,运行该生态系统的审计工具(npm audit、pip-audit 或同类工具)——这些工具会反映当前的安全公告。它们需要访问软件包注册表的网络连接;如果无法访问,则使用下方的关注清单,并说明审计是在离线状态下进行的
  • 标记存在已知 CVE、已弃用加密库或固定版本异常老旧的软件包
  • 阅读 references/vulnerable-packages.md,查看经过整理的关注清单
步骤 3 — 机密与暴露扫描

扫描范围内的所有文件(包括配置、环境、CI/CD、Dockerfile、IaC),检查以下内容:

  • 硬编码的 API 密钥、令牌、密码、私钥
  • 意外提交的 .env 文件
  • 注释或调试日志中的机密
  • 云凭据(AWS、GCP、Azure、Stripe、Twilio 等)
  • 内嵌凭据的数据库连接字符串
  • 阅读 references/secret-patterns.md,查看要应用的正则表达式模式和熵值启发式规则
步骤 4 — 漏洞深度扫描

这是核心扫描。请推理代码,不要只做模式匹配。 阅读 references/vuln-categories.md,了解每个类别的完整详情。

注入缺陷

  • SQL 注入:使用字符串插值的原始查询、ORM 误用、二阶 SQL 注入
  • XSS:未转义的输出、dangerouslySetInnerHTML、innerHTML、模板注入
  • 命令注入:将用户输入传入 exec/spawn/system
  • LDAP、XPath、Header、日志注入

身份验证与访问控制

  • 敏感端点缺少身份验证
  • 对象级授权失效(BOLA/IDOR)
  • JWT 弱点(alg:none、弱密钥、未验证过期时间)
  • 会话固定、缺少 CSRF 防护
  • 会话 Cookie 缺少 Secure / HttpOnly / SameSite
  • 密码以明文或快速哈希存储;密码策略薄弱;特权账户未启用 MFA
  • 权限提升路径
  • 批量赋值 / 参数污染

数据处理

  • 在日志、错误消息或 API 响应中暴露敏感数据
  • 缺少静态或传输加密
  • 不安全的反序列化
  • 路径遍历 / 目录遍历
  • XXE(XML 外部实体)处理
  • SSRF(服务端请求伪造)

密码学

  • 将 MD5、SHA1、DES 用于安全用途
  • IV 或盐值硬编码
  • 随机数生成薄弱(使用 Math.random() 生成令牌)
  • 未验证 TLS 证书

安全配置错误与日志记录

  • CORS 过于宽松、在生产环境启用调试模式、缺少安全标头 (框架特定细节见 references/language-patterns.md)
  • 未记录安全事件(登录失败、访问控制拒绝、权限变更),导致攻击无法被检测

业务逻辑

  • 竞争条件(TOCTOU)
  • 财务计算中的整数溢出
  • 敏感端点缺少速率限制
  • 资源标识符可预测
步骤 5 — 跨文件数据流分析

完成逐文件扫描后,进行整体审查:

  • 跟踪用户可控输入从入口点(HTTP 参数、标头、请求体、文件上传)到接收点(数据库查询、exec 调用、HTML 输出、文件写入)的完整流程
  • 识别只有结合多个文件检查才能发现的漏洞
  • 检查服务或模块之间不安全的信任边界
步骤 6 — 自我验证

对于每项发现:

  1. 重新仔细阅读相关代码
  2. 自问:“这真的可以被利用吗?还是我漏看了某种净化处理?”
  3. 检查框架或中间件是否已在上游处理此问题
  4. 降低或舍弃并非真实漏洞的发现
  5. 确定最终严重程度:CRITICAL / HIGH / MEDIUM / LOW / INFO
步骤 7 — 生成安全报告

按照 references/report-format.md 中定义的格式输出完整报告。 对于代码片段或差异范围,应省略不适用的部分(例如,未更改清单文件时省略依赖项审计),而不是用零填充。

步骤 8 — 提出补丁

针对每项 CRITICAL 和 HIGH 级别的发现,生成具体补丁:

  • 展示存在漏洞的代码(修改前)
  • 展示修复后的代码(修改后)
  • 说明更改内容及原因
  • 保留原有代码风格、变量名和结构
  • 添加行内注释说明修复内容

明确说明:“应用前请逐一审查每个补丁。目前尚未做任何更改。”

严重程度指南

严重程度含义示例
🔴 CRITICAL存在可立即利用的风险,很可能导致数据泄露SQLi、RCE、身份验证绕过
🟠 HIGH严重漏洞,存在可利用路径XSS、IDOR、硬编码密钥
🟡 MEDIUM满足特定条件或结合其他漏洞后可利用CSRF、开放重定向、弱密码学
🔵 LOW违反最佳实践,直接风险较低错误信息过于详细、缺少标头
⚪ INFO值得注意的情况,但并非漏洞依赖项过时(无 CVE)

输出规则

  • 始终先输出发现摘要表(按严重程度统计)
  • 绝不自动应用任何补丁——仅提供补丁供人工审查
  • 始终为每项发现注明置信度(高 / 中 / 低)
  • 按类别对发现进行分组,而非按文件
  • 具体说明——包含文件路径、行号和确切的易受攻击代码片段
  • 用通俗易懂的英语解释风险——攻击者可以利用它做什么?
  • 如果代码库没有问题,请明确说明:“未发现漏洞”,并注明扫描范围

参考文件

如需详细的检测指导,请按需加载以下参考文件:

  • references/vuln-categories.md — 涵盖每种漏洞类别的深入参考,包括检测信号、安全模式和升级检查器
    • 搜索模式:SQL injection、XSS、command injection、SSRF、BOLA、IDOR、JWT、CSRF、secrets、cryptography、race condition、path traversal
  • references/secret-patterns.md — 正则表达式模式、基于熵的检测和 CI/CD 密钥风险
    • 搜索模式:API key、token、private key、connection string、entropy、.env、GitHub Actions、Docker、Terraform
  • references/language-patterns.md — 针对 JavaScript、Python、Java、PHP、Go、Ruby 和 Rust 的框架特定漏洞模式
    • 搜索模式:Express、React、Next.js、Django、Flask、FastAPI、Spring Boot、PHP、Go、Rails、Rust
  • references/vulnerable-packages.md — 针对 npm、pip、Maven、Rubygems、Cargo 和 Go 模块的精选 CVE 关注列表
    • 搜索模式:lodash、axios、jsonwebtoken、Pillow、log4j、nokogiri、CVE
  • references/report-format.md — 安全报告结构化输出模板,包含发现项卡片、依赖项审计、密钥扫描和补丁提案格式
    • 搜索模式:report、format、template、finding、patch、summary、confidence

每项发现的“参考”行所用的外部参考资料: OWASP Top 10、CWE Top 25

评论

支持 Markdown