代码安全审查
这个技能做什么
扫描代码仓库或代码片段,自动检测安全漏洞:
- OWASP Top 10:注入、认证失效、敏感数据泄露、XXE、访问控制失效
- 常见漏洞:XSS、CSRF、SSRF、路径遍历、反序列化、依赖漏洞
- 密钥泄露:硬编码的 API key、密码、token
- 配置风险:不安全的默认配置、调试模式开启
- 修复方案:每个发现附带代码级修复建议
触发条件
- 提到"安全审查""security review""漏洞扫描""代码安全"
- 使用
/security-review或/sec-scan命令 - 在 PR review 时要求检查安全性
示例:
- "审查这个仓库的安全问题"
- "/security-review ./src"
- "检查这段代码有没有安全漏洞"
工作流
步骤 1:确认扫描范围
- 代码仓库路径 / GitHub URL / 直接粘贴代码
- 语言和框架(可选,自动检测)
步骤 2:安全扫描
按以下类别逐一检测:
A. 注入漏洞
- SQL 注入:拼接 SQL 语句、未参数化查询
- NoSQL 注入:未过滤的用户输入直接传入查询
- 命令注入:
exec(),system(),child_process使用用户输入 - LDAP/XPath 注入
检测模式:
- SELECT.*FROM.*+.*用户变量
- db.query(".*" + .*variable)
- exec(.*req\.
- eval(.*req\.
- child_process.exec(.*input
B. 认证与授权
- 密码明文存储
- 弱密码哈希(MD5、SHA1)
- JWT 未验证签名/算法
- Session 固定攻击
- 缺少权限检查的敏感操作
- IDOR(不安全直接对象引用)
C. 跨站攻击
- XSS:未转义的用户输入输出到HTML
- CSRF:缺少 CSRF token
- 开放重定向
D. 数据保护
- 敏感数据明文传输(HTTP)
- API 响应泄露敏感字段
- 错误信息泄露堆栈/路径
- 日志记录敏感数据
E. 配置安全
- 调试模式在生产环境开启
- CORS 配置为
* - 目录列表开启
- 默认凭证未修改
- 不安全的 HTTP 头
F. 依赖安全
- 已知有漏洞的依赖包版本
- 锁文件与 package.json 不一致
G. 密钥泄露
- 硬编码 API key / 密码 / token
.env文件被提交到仓库- 私钥文件在仓库中
步骤 3:风险评级
| 级别 | 标准 | 修复时限 |
|---|---|---|
| 🔴 严重 | 可被远程利用,影响数据安全 | 立即 |
| 🟠 高危 | 需要特定条件但影响重大 | 24h |
| 🟡 中危 | 需要已认证用户或特定场景 | 1周 |
| 🟢 低危 | 最佳实践问题 | 2周 |
步骤 4:输出报告
🔒 安全审查报告
扫描目标:{路径} 日期:{日期} 语言/框架:{检测到的}
摘要
| 级别 | 数量 |
|---|---|
| 🔴 严重 | {n} |
| 🟠 高危 | {n} |
| 🟡 中危 | {n} |
| 🟢 低危 | {n} |
| 安全评分 | {x}/100 |
详细发现
🔴 [严重] {漏洞名称}
- 类型:OWASP A0X: {类别}
- 位置:
{文件}:{行号} - 描述:{漏洞说明}
- 风险:{可能的影响}
// 当前代码
{问题代码}
// 修复建议
{修复代码}
🟠 [高危] {漏洞名称}
{同上格式}
(所有发现按级别排列)
依赖安全
| 包名 | 当前版本 | 漏洞 | 修复版本 |
|---|---|---|---|
| {包名} | {版本} | {CVE} | {版本} |
修复路线图
- 立即:{严重项}
- 24h内:{高危项}
- 1周内:{中危项}
步骤 5:质量自检
- 每个发现都有文件位置和行号
- 每个发现都有修复代码示例
- OWASP Top 10 类别全部覆盖
- 依赖漏洞检查已执行
- 密钥泄露检查已执行
使用示例
用户输入:
审查 ./api 目录的安全性
AI 行为:读取代码 → 逐类扫描 → 输出报告
注意事项
- 只报告实际风险,考虑上下文(内网工具风险等级降低)
- 修复建议必须包含可运行的代码
- 标注 OWASP 类别方便对照
- 不执行攻击性测试
技能边界
不做渗透测试、不访问外部系统、不替代专业安全审计。
AgentSkills Factory 出品 | 版本 1.0.0 | 适用于 Claude Code / Cursor / Codex CLI / OpenClaw
