关于 security-code-audit
面向 AI 编码工具的源代码安全审计 Skill,通过追踪不可信输入到危险用法来查找漏洞,无需运行应用即可开展分析。
主要功能
- 01追踪输入从来源到危险点
- 02检查 OWASP Top 10 常见模式
- 03提供特定技术栈安全参考
- 04记录严重性与可利用性
- 05衔接验证与修复流程
适用场景
- 01无需运行应用进行代码审计
- 02追踪用户输入进入数据库查询的路径
- 03检查授权与访问控制逻辑
- 04整理漏洞发现以便后续修复
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mn-youssef/ security-skills --skill security-code-audit安装后在 Claude Code 中输入/security-code-audit确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/api-backend.mddatabase.mdweb-frontend.md详细介绍
安全代码审计(FIND 阶段)
概述
阅读源代码并通过模式查找漏洞。无需运行应用——适用于任何 AI 编码工具。追踪不可信输入从其来源(输入的位置)到其汇点(被危险使用的位置)。
**核心原则:**漏洞是指不可信数据到达危险汇点,且中间没有经过充分验证或编码。找出来源→汇点路径。
方法:来源 → 汇点追踪
- 根据威胁模型(或通过扫描入口点),选择一个不可信输入的来源。
- 沿代码追踪数据,直到它被使用的位置(汇点)。
- 思考:是否针对该汇点对数据进行验证、清理、参数化或编码?如果没有 → 记录发现项。
- 记录严重程度、
file:line、确切的数据路径以及利用方法。
OWASP Top 10——搜索内容
| 风险 | 要搜索的代码特征/汇点 |
|---|---|
| 注入(SQL/NoSQL/命令) | 通过字符串拼接构建查询、exec、eval、system、查询中的模板插值 |
| 访问控制失效(IDOR) | 根据用户提供的 id 查找对象,但不检查所有权 |
| 身份验证失效 | 自定义加密、薄弱的会话处理、缺少 MFA、令牌出现在 URL 中 |
| 加密失效 | 密码使用 md5/sha1、硬编码密钥、令牌使用 Math.random、未使用 TLS |
| SSRF | 服务端获取用户提供的 URL(requests.get(input)、fetch(input)) |
| 安全配置错误 | debug=true、默认凭据、宽松的 CORS *、详细错误信息 |
| XSS | innerHTML、dangerouslySetInnerHTML、v-html、未转义的模板输出 |
| 不安全的反序列化 | pickle.loads、yaml.load、对输入进行原生反序列化 |
| 易受攻击的依赖项 | 对照安全公告检查锁文件(npm audit、pip-audit、osv) |
| SSTI/路径遍历 | 渲染输入内容作为模板、输入文件路径中含有 ../ |
领域参考资料(加载与你的技术栈匹配的资料)
references/web-frontend.md— XSS、CSRF、CSP、客户端密钥、点击劫持references/api-backend.md— 授权/IDOR、注入、SSRF、JWT、速率限制、批量赋值references/database.md— SQLi/NoSQLi、访问控制、数据暴露、ORM 陷阱
输出:发现项登记表
| ID | 严重程度 | 标题 | 位置 | 来源→汇点 | 可利用性 | 修复指引 |
|---|---|---|---|---|---|---|
| F1 | 高 | 用户搜索中的 SQLi | api/users.py:42 | ?q= → 原始 SQL | 无需身份验证,可导出数据库 | 参数化查询 → security-hardening |
严重程度 = 威胁模型风险评分,并根据代码的实际可利用性调整。
交接
运行中的应用存在高严重程度的发现项 → 交给 active-pentest 验证。
所有发现项 → 交给 security-hardening 修复。
常见错误
- 只匹配汇点模式,却未确认输入确实由攻击者控制(误报)。
- 在第一个汇点就停止——一个来源通常会到达多个汇点。
- 信任客户端验证——它可以被绕过;服务端必须验证。
- 忽视授权:现实中的大多数安全事件都源于访问控制问题,而非罕见的注入攻击。
评论
支持 Markdown