PHP JWT Library: RSA1_5 (RSAES-PKCS1-v1_5) decryption lacks implicit rejection, exposing a Bleichenbacher/Marvin padding oracle
Description
The PHP JWT Library's RSA1_5 decryption implementation lacks the required implicit rejection countermeasure for RSAES-PKCS1-v1_5 padding, enabling a Bleichenbacher/Marvin padding oracle attack. This allows attackers to distinguish padding errors through timing side channels and potentially recover the wrapped content encryption key (CEK). The vulnerability affects applications using RSA1_5 with an RSA private key. A patch is available that implements constant-time implicit rejection, neutralizing the oracle. Users are advised to migrate to RSA-OAEP algorithms and avoid enabling RSA1_5 for untrusted tokens.
CVSS v4.0
Affected software
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The vulnerability exists in the PHP JWT Library's RSACrypt::decryptWithRSA15() function, which performs RSAES-PKCS1-v1_5 decryption by checking padding after the RSA decryption primitive. It throws an exception immediately upon detecting malformed padding instead of implementing the implicit rejection countermeasure mandated by RFC 3447 §7.2.2 and RFC 8017 §7.1.2. This behavior creates a Bleichenbacher/Marvin padding oracle, where attackers can differentiate between padding failures, incorrect CEK lengths, and successful AEAD decryption by measuring timing differences amplified by ciphertext size. The vulnerability affects configurations that register RSA1_5 for decryption and hold an RSA private key. The patch introduces constant-time implicit rejection by returning a random CEK of expected size on padding failure and always performing the AEAD step uniformly, removing observable differences. Migration to RSA-OAEP is strongly recommended.
Potential Impact
An attacker can exploit timing side channels to distinguish padding errors during RSA1_5 decryption, enabling a Bleichenbacher/Marvin padding oracle attack. This can lead to recovery of the wrapped content encryption key (CEK), compromising the confidentiality of encrypted tokens. The vulnerability affects applications that use RSA1_5 key encryption with an RSA private key. No known exploits in the wild have been reported.
Mitigation Recommendations
A patch is available that implements the required implicit rejection countermeasure in constant time, neutralizing the Bleichenbacher padding oracle. Users should apply this patch to versions prior to 3.4.10, 4.0.0 up to but not including 4.0.7, and 4.1.0 up to but not including 4.1.7. Additionally, users are strongly advised to migrate to RSA-OAEP or RSA-OAEP-256 algorithms and avoid enabling RSA1_5 for untrusted tokens.
Technical Details
- Gcve Source
- db.gcve.eu
- Osv Id
- GHSA-5739-39v2-5754
- Osv Schema Version
- 1.4.0
- Ecosystems
- ["Packagist"]
- Database Specific Severity
- MODERATE
- Cvss Version
- 4.0
Threat ID: 6a95a0d7acd9273b494784c2
Added to database: 08/31/2026, 15:42:15 UTC
Last enriched: 09/09/2026, 12:07:47 UTC
Last updated: 10/04/2026, 02:10:12 UTC
Views: 39
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
External Links
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.