UBUNTU-CVE-2026-45363: Critical severity ubuntu/ruby-jwt vulnerability
ruby-jwt is a Ruby implementation of the RFC 7519 OAuth JSON Web Token standard. Prior to 2.10.3 and 3.2.0, JWT.decode(token, '', true, algorithm: 'HS256') accepts an attacker-forged token because OpenSSL::HMAC.digest('SHA256', '', payload) returns a valid digest under an empty key and no empty-key precondition exists in the HMAC algorithm. The same path is reached when a keyfinder block or keyfinder: argument returns an empty string, nil, or an array containing nil for an unknown key, affecting HS256, HS384, and HS512 verification through JWT.decode and JWT::EncodedToken#verifysignature!. This issue is fixed in versions 2.10.3 and 3.2.0.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ubuntu/ruby-jwtto a version that resolves this vulnerability.Fixed in 1.0.0-3ubuntu0.1~esm1 - Upgrade
Upgrade
ubuntu/ruby-jwtto a version that resolves this vulnerability.Fixed in 1.5.6-1ubuntu0.1~esm1 - Upgrade
Upgrade
ubuntu/ruby-jwtto a version that resolves this vulnerability.Fixed in 2.1.0-2ubuntu0.1~esm1 - Upgrade
Upgrade
ubuntu/ruby-jwtto a version that resolves this vulnerability.Fixed in 2.2.2-1ubuntu0.1~esm1 - Upgrade
Upgrade
ubuntu/ruby-jwtto a version that resolves this vulnerability.Fixed in 2.7.1-1+deb13u1build0.24.04.1 - Upgrade
Upgrade
ubuntu/ruby-jwtto a version that resolves this vulnerability.Fixed in 2.7.1-1+deb13u1build0.26.04.1 - Upgrade
Upgrade
ruby-jwtto a version that resolves this vulnerability.Fixed in 2.10.3 - Upgrade
Upgrade
ruby-jwtto a version that resolves this vulnerability.Fixed in 3.2.0
Event History
Frequently Asked Questions
Which verification setups are vulnerable?
Applications are affected when they verify JWTs with HS256, HS384, or HS512 and the verification key is an empty string. The same condition can occur if a keyfinder block or key_finder argument returns an empty string, nil, or an array containing nil for an unknown key.
What does an attacker need to exploit this?
An attacker can forge a token when the application reaches the affected HMAC verification path with an empty or nil-derived key. The reported vector requires no privileges or user interaction and is network-accessible.
How can I determine whether my application is exposed?
Review calls to JWT.decode and JWT::EncodedToken#verify_signature! that use HS256, HS384, or HS512. Check whether the configured key can be empty and whether key lookup handling for unknown keys can return an empty string, nil, or an array containing nil.
What should be done if an immediate upgrade is not possible?
Ensure HMAC verification is not performed with an empty key, and make keyfinder or key_finder handling reject unknown keys rather than returning an empty string, nil, or an array containing nil. Upgrade to ruby-jwt 2.10.3 or 3.2.0 when possible.