关于 security-audit
security-audit 是用于检查代码库安全漏洞的审查技能。它跨文件追踪数据流、复核发现以筛除误报、标注严重程度,并提出由人工审阅的补丁,不会自动应用。
主要功能
- 01扫描代码库或变更范围
- 02审计依赖项和机密信息
- 03跨文件数据流分析
- 04标注严重程度与置信度
- 05提出供人工审阅的补丁
适用场景
- 01提交或部署前审查代码
- 02调查注入与访问控制风险
- 03检查依赖项和代码中的暴露机密
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ xgent-ai/ skills --skill security-audit安装后在 Claude Code 中输入/security-audit确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/language-patterns.mdreport-format.mdsecret-patterns.mdvuln-categories.mdvulnerable-packages.md详细介绍
安全审查
一款由 AI 驱动的安全扫描工具,能够像人类安全研究员一样分析你的代码库——追踪数据流、理解组件交互,并发现模式匹配工具会漏掉的漏洞。
何时使用此技能
在请求涉及以下内容时使用此技能:
- 扫描代码库或文件中的安全漏洞
- 执行安全审查或漏洞检查
- 在提交或部署前检查已更改的代码——尤其是身份验证、API、数据库、依赖项或配置更改
- 检查 SQL 注入、XSS、命令注入或其他注入漏洞
- 查找代码中暴露的 API 密钥、硬编码机密或凭据
- 审计依赖项是否存在已知 CVE
- 审查身份验证、授权或访问控制逻辑
- 检测不安全的加密方式或弱随机数
- 执行数据流分析,追踪用户输入到危险接收点的路径
- 任何类似“我的代码安全吗?”、“扫描这个文件”或“检查我的仓库是否有漏洞”的请求
- 运行
/security-review或/security-review <path>
此技能的工作方式
与通过匹配模式工作的传统静态分析工具不同,此技能会:
- 像安全研究员一样阅读代码——理解上下文、意图和数据流
- 跨文件追踪——跟踪用户输入在应用中的流转
- 自行验证发现——重新检查每项结果,以过滤误报
- 评定严重程度——CRITICAL / HIGH / MEDIUM / LOW / INFO
- 提出有针对性的补丁——每项发现都包含具体修复方案
- 要求人工批准——不会自动应用任何更改;始终由你先行审查
执行工作流
每次都按顺序执行以下步骤:
步骤 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 — 自我验证
对于每项发现:
- 重新仔细阅读相关代码
- 自问:“这真的可以被利用吗?还是我漏看了某种净化处理?”
- 检查框架或中间件是否已在上游处理此问题
- 降低或舍弃并非真实漏洞的发现
- 确定最终严重程度: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