jwt/ruby-jwe · Security
JWE is missing AES-GCM authentication tag validation in encrypted JWE
- GHSA ID
- GHSA-c7p4-hx26-pr73
- CVE ID
- CVE-2025-54887
- Severity
- critical
- Published
- Updated
- CVSS
- 9.1 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
- CVSS v3
- 9.1 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Description
Overview
The authentication tag of encrypted JWEs can be brute forced, which may result in loss of confidentiality for those JWEs and provide ways to craft arbitrary JWEs.
Impact
- JWEs can be modified to decrypt to an arbitrary value
- JWEs can be decrypted by observing parsing differences
- The GCM internal GHASH key can be recovered
Am I Affected?
You are affected by this vulnerability even if you do not use an AES-GCM encryption algorithm for your JWEs.
Patches
The version 1.1.1 fixes the issue by adding the tag length check for the AES-GCM algorithm.
Important: As the GHASH key could have leaked, you must rotate the encryption keys after upgrading to version 1.1.1.
References
CWEs
- CWE-354 · Improper Validation of Integrity Check Value
References
- https://github.com/jwt/ruby-jwe/security/advisories/GHSA-c7p4-hx26-pr73 ↗
- https://nvd.nist.gov/vuln/detail/CVE-2025-54887 ↗
- https://github.com/jwt/ruby-jwe/commit/1e719d79ba3d7aadaa39a2f08c25df077a0f9ff1 ↗
- https://github.com/rubysec/ruby-advisory-db/blob/master/gems/jwe/CVE-2025-54887.yml ↗
- https://github.com/advisories/GHSA-c7p4-hx26-pr73 ↗