GHSA-c7p4-hx26-pr73
JWE is missing AES-GCM authentication tag validation in encrypted JWE
Packages
Details
As written in the advisory (Markdown source, shown as plain text).
### 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](https://en.wikipedia.org/wiki/Galois/Counter_Mode#:~:text=\)%20is%20the-,hash%20key,-%2C%20a%20string%20of) 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](https://en.wikipedia.org/wiki/Galois/Counter_Mode#:~:text=\)%20is%20the-,hash%20key,-%2C%20a%20string%20of) could have leaked, you must rotate the encryption keys after upgrading to version 1.1.1.
### References
[Félix Charette talk at NorthSec 2025 about the issue](https://www.youtube.com/watch?v=9IT659uUXfs&t=15830s)
References
External links from the advisory. They lead to third-party sites.
- 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/jwt/ruby-jwe
- https://github.com/rubysec/ruby-advisory-db/blob/master/gems/jwe/CVE-2025-54887.yml