mcpField
S
security-review

security-review

github.com/pixel-process-ug安全382 次安装33 周前更新
代码仓库

关于 security-review

面向开发者的代码安全审查技能,按流程覆盖攻击面梳理、OWASP 检查、修复建议、基础设施加固和 STRIDE 威胁建模。

主要功能

  1. 01梳理攻击面与数据流
  2. 02OWASP Top 10 审查清单
  3. 03认证与输入校验指导
  4. 04密钥和依赖项加固
  5. 05STRIDE 威胁建模

适用场景

  1. 01审查认证或会话变更
  2. 02检查新增 API 端点及用户输入
  3. 03评估依赖项与部署配置

安装

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

$npx skills add https://github.com/pixel-process-ug/superkit-agents --skill security-review

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

附带文件owasp-checklist.md

详细介绍

安全审查

概述

系统地审查代码中的安全漏洞,应用安全编码模式,并确保应用遵循纵深防御原则。本技能涵盖 OWASP Top 10、身份验证模式选择、输入验证、密钥管理、依赖项审计、安全标头和威胁建模。

开始时声明:“我正在使用 security-review 技能评估安全态势。”


阶段 1:范围界定与威胁评估

**目标:**识别攻击面,并确定审查重点的优先级。

操作
  1. 识别所有面向用户的端点和输入界面
  2. 梳理身份验证和授权边界
  3. 列出外部依赖项及其信任级别
  4. 识别敏感数据流(PII、凭据、支付信息)
  5. 确定合规要求(SOC 2、GDPR、HIPAA)
停止——在进入阶段 2 前,切勿继续:
  • 已梳理攻击面
  • 已识别敏感数据流
  • 已了解合规要求

阶段 2:OWASP Top 10 审计

**目标:**按照每个 OWASP 类别进行系统检查。

OWASP Top 10 检查清单(2021)
#类别关键检查项通过/失败
1访问控制失效在每个端点验证授权,默认拒绝
2加密机制失效不存在明文密钥,使用强算法(AES-256、bcrypt)
3注入使用参数化查询,不通过字符串拼接构造 SQL/命令
4不安全设计制定威胁模型,实施速率限制,考虑滥用场景
5安全配置错误生产环境无默认配置,权限最小化,错误消息不泄露任何信息
6易受攻击的组件审计依赖项,不存在已知 CVE,制定更新策略
7身份验证失效提供 MFA,密码经过哈希处理,会话管理安全
8软件和数据完整性失效验证签名,验证 CI/CD 流水线完整性
9日志记录和监控失效记录身份验证事件、访问控制失败和输入验证失败
10SSRF验证 URL/使用允许列表,不允许用户输入访问内部网络
停止——在进入阶段 3 前,切勿继续:
  • 已检查全部 10 个类别
  • 已记录问题及其严重程度

阶段 3:按类别深入审查

**目标:**针对已识别的问题应用详细的安全模式。

身份验证模式选择表
模式适用场景关键要求
JWT无状态 API、微服务、移动后端多服务场景使用 RS256;访问令牌最长 15 分钟;使用 HttpOnly Cookie
基于会话传统 Web 应用、服务端渲染页面服务端存储;使用 HttpOnly + Secure + SameSite Cookie;使用 CSRF 令牌
OAuth2/OIDC第三方登录、SSO、委托身份验证使用 Authorization Code + PKCE;验证 ID 令牌声明;在服务端存储令牌
Passkeys/WebAuthn无密码、高安全性应用抵御网络钓鱼;仅存储公钥;支持每个账户使用多个密钥
JWT 安全检查清单
方面指引
签名多服务场景使用 RS256(非对称),单服务场景使用 HS256
有效期访问令牌:最长 15 分钟。刷新令牌:最长 7 天
存储使用 HttpOnly Cookie(Web)或安全存储(移动端)。切勿使用 localStorage
刷新每次使用时轮换刷新令牌,登出时使令牌失效
载荷仅包含必要声明(sub、exp、iat、roles)。不得包含敏感数据
输入验证模式

允许列表验证(始终优先于阻止列表):

# Good: allow-list
ALLOWED_SORT_FIELDS = {'name', 'created_at', 'price'}
if sort_field not in ALLOWED_SORT_FIELDS:
    raise ValidationError("Invalid sort field")

# Bad: block-list (always incomplete)
BLOCKED_CHARS = ['<', '>', '"']

参数化查询(绝不拼接用户输入):

# Good: parameterized
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))

# Bad: SQL injection vulnerability
cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")
文件上传验证
  • 在服务端验证 MIME 类型(不能只检查扩展名)
  • 限制文件大小
  • 生成随机文件名(绝不使用用户提供的名称)
  • 将上传文件存储在 Web 根目录之外
  • 如果接受不可信用户上传的文件,请扫描恶意软件
停止 — 在进入阶段 4 之前,不要继续:
  • 所有已识别的问题都有修复建议
  • 已正确应用身份验证模式
  • 输入验证全面

阶段 4:基础设施与依赖项加固

**目标:**保护部署环境和供应链。

密钥管理规则
环境方法
开发.env 文件(已在 git 中忽略)
CI/CD流水线密钥(GitHub Secrets、GitLab CI vars)
生产密钥管理器(AWS Secrets Manager、Vault、GCP Secret Manager)
绝不可做的密钥操作
  • 绝不在源代码中硬编码密钥
  • 绝不将 .env 文件提交到 git
  • 绝不记录密钥(即使在调试级别)
  • 绝不将密钥作为命令行参数传递
  • 绝不在不同环境中使用相同的密钥
依赖项审计命令
# Node.js
npm audit
npx socket-security audit

# Python
pip-audit
safety check

# Go
govulncheck ./...

# Rust
cargo audit
安全标头
标头值用途
Content-Security-Policydefault-src 'self'(根据应用自定义)防止 XSS、数据注入
Strict-Transport-Securitymax-age=63072000; includeSubDomains强制使用 HTTPS
X-Content-Type-Optionsnosniff防止 MIME 嗅探
X-Frame-OptionsDENY 或 SAMEORIGIN防止点击劫持
Referrer-Policystrict-origin-when-cross-origin控制 referer 信息泄露
Permissions-Policy禁用未使用的 API限制浏览器功能访问
CORS 规则
  • 绝不在携带凭据时使用 Access-Control-Allow-Origin: *
  • 将允许的来源加入白名单
  • 将允许的方法和标头限制为所需范围

阶段 5:威胁建模(STRIDE)

**目标:**对于新功能或重大变更,逐一检查每类威胁。

威胁问题缓解措施
欺骗攻击者能否冒充他人?强身份验证、多因素身份验证
篡改数据能否在不被发现的情况下遭到修改?完整性检查、签名
抵赖用户能否否认执行过某项操作?审计日志
信息泄露敏感数据能否通过错误、日志或侧信道泄露?错误信息清理、加密
拒绝服务系统能否被压垮?速率限制、资源配额
权限提升用户能否获得其不应拥有的权限?最小权限、RBAC

对于每项已识别的威胁:

  1. 记录威胁和攻击途径
  2. 评估可能性和影响
  3. 定义缓解措施
  4. 验证缓解措施已实施并经过测试

决策表:安全审查深度

变更类型审查深度重点领域
身份验证/会话变更全面 STRIDE + OWASP所有类别
用户输入处理重点关注注入和验证OWASP 1、3、10
依赖项更新CVE 扫描 + 更新日志审查OWASP 6
新增 API 端点访问控制 + 输入验证OWASP 1、3、5
配置/基础设施密钥 + 标头 + 错误配置OWASP 2、5
文件上传功能注入 + SSRF + 恶意软件OWASP 3、10

反模式 / 常见错误

反模式错误原因正确做法
仅在客户端进行验证容易绕过始终在服务端进行验证
在 localStorage 中存储令牌XSS 可能窃取令牌使用 HttpOnly Cookie
使用阻止列表进行输入验证阻止列表总是不完整使用允许列表进行验证
在生产环境中使用通用错误消息可能泄露内部详情清理错误信息,在服务端记录详细信息
在不同环境中使用相同的密钥一个环境遭到入侵会导致所有环境都受影响为每个环境使用不同的密钥
忽略依赖项 CVE已知漏洞正遭到积极利用定期审计并更新
在携带凭据时使用 CORS 通配符会完全破坏 CORS 保护将特定来源加入允许列表
记录敏感数据日志泄露会导致数据泄露切勿记录密钥、PII 或令牌

密钥轮换计划

密钥类型轮换频率怀疑密钥泄露后
API 密钥每 90 天立即
数据库密码每 90 天立即
加密密钥每年(支持密钥版本控制)立即
JWT 签名密钥每 6 个月立即
OAuth 客户端密钥每 90 天立即

子 Agent 派发机会

任务模式派发给适用时机
并行扫描不同的 OWASP 类别Agent 工具,使用 subagent_type="Explore"(每个类别一个)审查涵盖多种漏洞类型的大型代码库时
分析身份验证流程Agent 工具,使用 subagent_type="general-purpose"身份验证实现涉及多个文件或服务时
扫描依赖项漏洞Bash 工具,使用 run_in_background=true并发运行 npm audit 或类似工具时

派发时请遵循 dispatching-parallel-agents 技能协议。


集成点

技能关联方式
code-review安全发现属于 Critical 类问题
senior-backend后端加固遵循安全审查发现
senior-fullstack身份验证实现遵循安全模式
acceptance-testing安全要求转化为验收标准
performance-optimization速率限制兼顾安全性和性能
systematic-debugging安全事件会触发调试工作流

技能类型

灵活——根据决策表,按变更类型调整审查深度。对于任何身份验证或输入处理变更,强烈建议使用 OWASP 检查清单和 STRIDE 分析。密钥管理规则不可妥协。

评论

支持 Markdown