CVE-2026-45363: `jwt` (Ruby gem) - empty-key HMAC bypass
Vulnerability summary
CVE-2026-45363 is a critical (CVSS 9.1) Improper Authentication vulnerability in jwt ruby-jwt. EPSS estimates a 0.36% chance of exploitation in the next 30 days, higher than 30.3% of scored vulnerabilities.
Severe, CVSS 9.1 (CVE.org); no exploitation reported by the 5 checked sources; EPSS 0% (FIRST, 03-11-2026)
Source freshness unavailable
How is this decided?Advisory lineage
Upstream 0 · Downstream 4 · Related 1Timeline
- 14-07-2026PublishedVulnerability first disclosed.
- 19-09-2026Last modifiedVulnerability information updated.
Description
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 key_finder: 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#verify_signature!. This issue is fixed in versions 2.10.3 and 3.2.0.
CVSS metrics
7 scores · 7 sources · 1 version- OSV · UbuntuEcosystem advisory · calculated9.1CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
- OSV · DebianEcosystem advisory · calculated9.1CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
- OSV · WolfiEcosystem advisory · calculated9.1CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
- OSV · ChainguardEcosystem advisory · calculated9.1CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
- OSV · RubygemsEcosystem advisory · calculated7.4HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:NDiffers
- NVDNIST9.1CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
EPSS trend
Probability
0.36%
Chance of exploitation in the next 30 days
Percentile
30%
Versus all other CVEs
30-day change
No change 0.00 pp
From 0.36% on 04-10-2026
Known exploited
Compare KEV catalogsNot in the CISA KEV catalog.
Not in the ENISA CNW catalog.
Not in the CIRCL catalog.
Public exploits
0 foundNo public exploits indexed.
Weaknesses
CWE · root cause- CWE-287Improper AuthenticationWhen an actor claims to have a given identity, the product does not prove or insufficiently proves that the claim is correct.
- CWE-326Inadequate Encryption StrengthThe product stores or transmits sensitive data using an encryption scheme that is theoretically sound, but is not strong enough for the level of protection required.
- CWE-1391Use of Weak CredentialsThe product uses weak credentials (such as a default key or hard-coded password) that can be calculated, derived, reused, or guessed by an attacker.
Affected systems
Known conditions: network-reachable, no authentication, no user interaction (CVSS vector). Other conditions: not stated in public data.
Chainguard29 products
- cinc-auditor< 7.1.7-r0
- gitlab-rails-ce-18.1All versions (No fix recorded)
- gitlab-rails-ce-18.10< 18.10.8-r0
- gitlab-rails-ce-18.11< 18.11.5-r0
- gitlab-rails-ce-18.3All versions (No fix recorded)
Wolfi4 products
- cinc-auditor< 7.1.7-r0
- kube-fluentd-operator< 1.18.2-r65
- ruby3.2-kube-logging-operator-fluentd-outputs< 6.5.2-r0
- ruby3.4-kube-logging-operator-fluentd-outputs< 6.5.2-r0
Debian1 product
- ruby-jwt< 2.5.0-1+deb12u1 | < 2.7.1-1+deb13u1 | < 3.2.0-1
Jwt1 product
- ruby-jwt< 2.10.3 | ≥ 3.0.0, < 3.2.0
RubyGems1 product
- jwt≥ 3.0.0, < 3.2.0 | < 2.10.3
Ubuntu1 product
- ruby-jwtAll versions (No fix recorded)
6 vendors · 37 products
References
14 linksShow all 14 references
- github.com/jwt/ruby-jwtPACKAGE