mcpField
J
jwt-security-review

jwt-security-review

github.com/securityskills安全01.7k 次安装9 周前更新
代码仓库

关于 jwt-security-review

jwt-security-review 是一项端到端审查 JWT 身份验证的技能,适合检查认证代码的开发者和安全审查人员。它涵盖算法、密钥、声明和令牌生命周期,并要求输出问题影响路径及修复建议。

主要功能

  1. 01检查算法固定与密钥类型
  2. 02评估密钥强度和轮换
  3. 03验证声明与权限字段
  4. 04审查刷新、撤销和存储策略
  5. 05提供攻击测试案例与修复建议

适用场景

  1. 01审查服务端 JWT 验证实现
  2. 02检查令牌声明是否可被滥用
  3. 03评估刷新令牌轮换和撤销流程
  4. 04为发现的问题整理影响路径与修复方案

安装

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

$npx skills add https://github.com/securityskills/skills --skill jwt-security-review

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

详细介绍

JWT 安全审查

端到端审查基于 JWT 的身份验证。

审查领域

算法处理
  • 在服务器端固定预期算法;直接拒绝 alg: none
  • RS256→HS256 混淆:如果服务器使用公钥作为密钥来验证 HMAC,攻击者就可以伪造令牌。确认验证时针对每种算法使用正确的密钥类型
  • 注意 jku/x5u 头部注入:服务器可能会从攻击者可控的 URL 获取密钥
  • kid 注入:密钥查找中的路径遍历或 SQL/命令注入
密钥和机密强度
  • HS256 机密:熵至少为 32 字节,且不来自密码字典(jwt-tools 破解模式)
  • 轮换密钥;撤销旧密钥,而不只是停用
声明验证
  • 强制验证 exp 和 nbf,限制时钟偏差
  • 根据预期值验证 iss 和 aud
  • 拒绝包含非预期/额外特权声明(例如 admin: true)的令牌——解析后根据允许列表进行验证
  • 如果存在服务器端查询,则不要信任由客户端控制的 role/uid 声明
令牌生命周期
  • 刷新令牌:轮换并检测重用;在服务器端以哈希形式存储
  • 提供注销/更改密码/管理员强制注销时的撤销机制
  • 访问令牌应设置较短的有效期(≤15 min);不要使用长期有效的持有者令牌
  • 如果存在 XSS 攻击面,不要将令牌持久化到 localStorage;优先使用带 CSRF 防护的 httpOnly Cookie
  • sub 应稳定且明确(使用用户 ID,而不是可能更改的电子邮件地址)
常见代码异味
jwt.decode(token)            // decode ≠ verify: signature never checked
jwt.verify(token, key)       // no algorithms option pinned
jwt.verify(token, key, { algorithms: ['*'] })

测试用例

  1. 移除签名;发送 alg: none 令牌
  2. 将 alg 改为 HS256,并使用公钥签名
  3. exp 已过期/缺失,iss/aud 错误
  4. 使用有效签名篡改声明(例如提升角色)
  5. 重放已轮换的刷新令牌——应使整个令牌族失效

输出

提供包含令牌样例(已脱敏)、受影响代码路径以及各问题修复方案的发现报告。

评论

支持 Markdown