mcpField
S
security-review

security-review

github.com/troykelly安全1252 次安装41 周前更新
代码仓库

关于 security-review

security-review 是供代码审查使用的安全审查技能,适用于涉及身份验证、授权、用户输入、API、数据库或凭据的变更。它以 OWASP Top 10 为检查框架,并要求记录问题严重程度和审查结果。

主要功能

  1. 01识别安全敏感文件变更
  2. 02按 OWASP Top 10 检查代码
  3. 03审计依赖项漏洞
  4. 04按严重程度记录发现

适用场景

  1. 01审查身份验证或会话代码
  2. 02检查 API 与数据库改动
  3. 03评估凭据处理和用户输入

安装

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

$npx skills add https://github.com/troykelly/claude-skills --skill security-review

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

详细介绍

安全审查

概述

针对处理身份验证、授权、用户输入、API、数据库或凭据的代码进行专门安全审查。

核心原则: 安全问题需要超越常规代码审查的特别关注。

触发条件: 修改涉及安全敏感路径时,必须进行此审查。

开始时声明: “我正在对这段代码进行安全审查。”

必须进行审查的情况

修改以下任意文件时,必须使用此技能:

模式示例
**/auth/**src/auth/login.ts, lib/auth/session.js
**/security/**src/security/encryption.ts
**/middleware/**src/middleware/authenticate.ts
**/api/**src/api/endpoints.ts
**/*password*utils/passwordHash.ts
**/*token*services/tokenService.ts
**/*secret*config/secrets.ts
**/*credential*lib/credentials.js
**/*session*middleware/session.ts
**/routes/**src/routes/protected.ts
**/*.sqlmigrations/001_users.sql

使用以下命令检查:

git diff --name-only HEAD~1 | grep -E '(auth|security|middleware|api|password|token|secret|credential|session|routes|\.sql)'

OWASP Top 10 检查清单

逐项检查以下类别:

1. 注入(A03:2021)
检查项验证内容
SQL 注入所有查询均使用参数化语句
命令注入Shell 命令中不包含用户输入,或已正确转义
LDAP 注入LDAP 查询使用正确的转义方式
XPath 注入XPath 查询采用参数化方式
模板注入模板引擎配置安全
// VULNERABLE
db.query(`SELECT * FROM users WHERE id = '${userId}'`);

// SECURE
db.query('SELECT * FROM users WHERE id = ?', [userId]);
2. 身份验证失效(A07:2021)
检查项验证内容
密码存储密码使用 bcrypt/argon2 哈希(而非 MD5/SHA1)
会话管理Cookie 设置了 Secure、HttpOnly、SameSite
令牌处理JWT 已签名、经过验证且有效期较短
暴力破解防护对身份验证端点进行速率限制
凭据泄露日志、错误信息或响应中不包含凭据
3. 敏感数据泄露(A02:2021)
检查项验证内容
传输中的数据强制使用 HTTPS、TLS 1.2+
静态数据敏感数据已加密
代码中的机密信息未硬编码 API 密钥、密码或令牌
错误消息错误响应中不包含敏感信息
日志记录不记录敏感数据
# Check for hardcoded secrets
grep -rE '(password|secret|api_key|token)\s*[:=]\s*["\047][^"\047]+["\047]' src/
4. XML 外部实体(A05:2021)
检查项验证内容
XML 解析已禁用外部实体
DTD 处理如非必需,已禁用 DTD 处理
5. 访问控制失效(A01:2021)
检查项验证内容
授权检查每个端点都会验证权限
直接对象引用根据用户身份验证对象访问权限
权限提升用户无法提升自己的权限
CORS已正确限制来源
方法限制仅接受允许的 HTTP 方法
6. 安全配置错误(A05:2021)
检查项验证内容
默认凭据未使用默认密码
错误处理不向用户暴露堆栈跟踪
安全标头已设置 CSP、X-Frame-Options 等
调试模式在生产环境中已禁用
不必要的功能已移除未使用的端点/功能
7. 跨站脚本(A03:2021)
检查项验证内容
输出编码显示前对用户输入进行编码
DOM XSS不将用户输入用于 innerHTML
模板安全模板引擎会自动转义
CSP已配置内容安全策略
// VULNERABLE
element.innerHTML = userInput;

// SECURE
element.textContent = userInput;
// OR
element.innerHTML = DOMPurify.sanitize(userInput);
8. 不安全的反序列化(A08:2021)
检查项验证内容
对象反序列化不反序列化不可信数据
JSON 解析安全使用 JSON.parse
类型验证对反序列化后的对象进行验证
9. 使用存在已知漏洞的组件(A06:2021)
检查项验证内容
依赖项审计pnpm audit / pip audit 检查无问题
过时的软件包不存在严重过时的依赖项
CVE 检查依赖项中不存在已知 CVE
# Run dependency audit
pnpm audit --prod
# or
pip-audit
10. 日志记录与监控不足(A09:2021)
检查项验证内容
身份验证事件记录登录成功/失败
访问控制记录权限拒绝
输入验证记录验证失败
敏感操作记录管理员操作
日志完整性保护日志免遭篡改

审查流程

步骤 1:识别安全敏感变更
# List changed files matching security patterns
git diff --name-only HEAD~1 | grep -E '(auth|security|middleware|api|password|token|secret|session)'
步骤 2:审查每个文件

对于每个安全敏感文件:

  1. 阅读整个文件(不只是差异)
  2. 对照全部 10 个 OWASP 类别进行检查
  3. 记录发现的问题及其严重程度
步骤 3:检查依赖项
# Audit dependencies
pnpm audit --prod

# Check for outdated
pnpm outdated
步骤 4:记录发现的问题

使用以下严重程度级别:

严重程度描述操作
CRITICAL可被利用的漏洞,存在数据泄露风险合并前必须修复
HIGH严重的安全弱点合并前必须修复
MEDIUM纵深防御问题合并前应修复
LOW轻微改进可在未来的问题中修复
步骤 5:在审查产物中添加安全部分

添加到主审查产物中:

### Security Review

**Security-Sensitive:** YES
**Reviewed By:** [WORKER_ID or security-reviewer subagent]
**OWASP Categories Checked:** 10/10

#### Security Findings

| # | OWASP Category | Severity | Finding | Status |
|---|----------------|----------|---------|--------|
| 1 | A03 Injection | CRITICAL | SQL injection in findUser() | FIXED |
| 2 | A02 Sensitive Data | HIGH | API key in config.ts | DEFERRED #456 |
| 3 | A01 Access Control | MEDIUM | Missing auth on /admin | FIXED |

#### Dependency Audit

pnpm audit: 0 vulnerabilities


**Security Review Status:** [PASS|ISSUES_FIXED|ISSUES_DEFERRED]

安全审查产物(独立)

如果安全审查内容较多,请单独发布评论:


## Security Review

| Property | Value |
|----------|-------|
| Issue | #123 |
| Reviewer | `security-reviewer` subagent |
| Reviewed | 2025-12-29T10:30:00Z |

### Files Reviewed

- src/auth/login.ts
- src/middleware/authenticate.ts
- src/api/users.ts

### OWASP Checklist Results

| # | Category | Status | Notes |
|---|----------|--------|-------|
| A01 | Broken Access Control | PASS | Auth middleware on all protected routes |
| A02 | Cryptographic Failures | PASS | bcrypt for passwords, TLS enforced |
| A03 | Injection | FIXED | Parameterized SQL queries now |
| A04 | Insecure Design | PASS | - |
| A05 | Security Misconfiguration | PASS | - |
| A06 | Vulnerable Components | PASS | pnpm audit clean |
| A07 | Auth Failures | PASS | Rate limiting, secure sessions |
| A08 | Data Integrity Failures | PASS | - |
| A09 | Logging Failures | NOTE | Consider adding auth failure logging |
| A10 | SSRF | N/A | No server-side requests |

### Dependency Audit

found 0 vulnerabilities


**Security Review Status:** PASS

检查清单

完成安全审查前:

  • 已审查所有变更过的安全敏感文件
  • 已检查全部 10 个 OWASP 类别
  • 已运行依赖项审计
  • 已修复所有 CRITICAL/HIGH 级别的问题
  • 所有延期处理的问题均有跟踪事项
  • 已在审查产物中添加安全部分
  • 已在主产物中将 Security-Sensitive 标记为 YES

集成

此技能由以下情况触发:

  • 变更匹配安全敏感文件模式
  • 显式调用
  • security-reviewer 子代理

此技能与以下内容集成:

  • comprehensive-review - 安全是标准 #4
  • review-gate - 验证敏感变更是否经过安全审查

此技能由以下内容强制执行:

  • .claude/rules/security-sensitive.md 条件规则
  • PreToolUse 钩子(如果安全敏感变更未经审查,则阻止 PR)

评论

支持 Markdown