CVE-2026-33204 Overview
CVE-2026-33204 is a Denial of Service vulnerability affecting SimpleJWT, a JSON web token library written in PHP. Prior to version 1.1.1, an unauthenticated attacker can perform a Denial of Service attack via JWE header tampering when PBES2 (Password-Based Encryption Scheme 2) algorithms are used. Applications that call JWE::decrypt() on attacker-controlled JWEs using PBES2 algorithms are affected.
Critical Impact
Unauthenticated attackers can exploit this vulnerability to cause service disruption by tampering with JWE headers, potentially rendering applications using SimpleJWT unavailable.
Affected Products
- SimpleJWT versions prior to 1.1.1
- PHP applications using JWE::decrypt() with PBES2 algorithms
- Systems processing attacker-controlled JSON Web Encryption tokens
Discovery Timeline
- 2026-03-20 - CVE CVE-2026-33204 published to NVD
- 2026-03-23 - Last updated in NVD database
Technical Details for CVE-2026-33204
Vulnerability Analysis
This vulnerability is classified under CWE-400 (Uncontrolled Resource Consumption), indicating that the flaw allows attackers to exhaust system resources through maliciously crafted input. The vulnerability exists in the JWE (JSON Web Encryption) decryption process when PBES2 algorithms are utilized.
PBES2 algorithms are designed to derive cryptographic keys from passwords using iterative hashing, which is computationally expensive by design. When an attacker can control the JWE headers, they can manipulate parameters that govern this key derivation process, such as iteration counts, potentially forcing the server to perform excessive computational work during decryption attempts.
Root Cause
The root cause of this vulnerability is insufficient validation of JWE header parameters before processing. When JWE::decrypt() is called on attacker-controlled tokens, the library processes header values without adequate bounds checking on computationally sensitive parameters used in PBES2 key derivation. This allows attackers to specify extreme values that cause resource exhaustion.
Attack Vector
The attack vector is network-based and requires no authentication or user interaction. An attacker can craft malicious JWE tokens with manipulated headers and send them to any endpoint that processes JWE tokens using the vulnerable SimpleJWT library. When the application attempts to decrypt these tokens using PBES2 algorithms, the tampered header values cause excessive resource consumption.
The attack works by exploiting the password-based key derivation function parameters within the JWE header. By manipulating values such as the iteration count (p2c parameter) to extremely high values, attackers can force the server to perform billions of hash iterations, effectively causing CPU exhaustion and denial of service.
Detection Methods for CVE-2026-33204
Indicators of Compromise
- Unusual spikes in CPU utilization on systems processing JWT/JWE tokens
- Increased latency or timeouts on authentication endpoints
- Repeated JWE decryption attempts with abnormally high PBES2 iteration counts in request logs
- Application hangs or unresponsiveness during token validation operations
Detection Strategies
- Monitor application logs for JWE decryption errors or timeouts
- Implement rate limiting on endpoints accepting JWE tokens
- Audit SimpleJWT library version in PHP dependencies using composer show kelvinmo/simplejwt
- Review application code for calls to JWE::decrypt() with untrusted input
Monitoring Recommendations
- Set up alerts for abnormal CPU consumption patterns on web servers
- Monitor request duration metrics for endpoints processing encrypted tokens
- Configure logging to capture JWE header parameters before decryption
- Implement resource usage thresholds to detect potential exploitation attempts
How to Mitigate CVE-2026-33204
Immediate Actions Required
- Upgrade SimpleJWT to version 1.1.1 or later immediately
- Review all applications using SimpleJWT for vulnerable JWE::decrypt() calls
- Implement input validation on JWE tokens before passing them to the library
- Consider temporarily disabling PBES2 algorithm support if patching is delayed
Patch Information
The vulnerability has been patched in SimpleJWT version 1.1.1. The fix addresses the JWE header tampering issue by implementing proper validation of PBES2 parameters before processing decryption operations. Organizations should update their PHP dependencies immediately.
For detailed information about the security fix, refer to the GitHub Security Advisory GHSA-xw36-67f8-339x and the GitHub Release v1.1.1.
Workarounds
- Implement request timeout limits on JWE decryption operations to prevent resource exhaustion
- Add server-side validation to reject JWE tokens with suspicious PBES2 parameters before calling JWE::decrypt()
- Use rate limiting to restrict the number of JWE decryption requests per client
- Consider switching to non-PBES2 algorithms if the use case permits
# Update SimpleJWT to patched version using Composer
composer require kelvinmo/simplejwt:^1.1.1
# Verify the installed version
composer show kelvinmo/simplejwt | grep -i version
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

