CVE-2026-45363 json
`jwt` (Ruby gem) - empty-key HMAC bypass
published 2026-05-18 5 mo ago modified 2026-10-24 15 d ago also GHSA-c32j-vqhx-rx3x , EUVD-2026-44516
- cvss
- 9.1
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.4%
- EPSS 0.4% chance of exploitation in 30 days, percentile 30%
- public exploits
- 0
- none known
Summary
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.
Patch / fix
- rubygems jwt 2.10.3, 3.2.0
- ruby-jwt Debian 12 2.5.0-1+deb12u1
- ruby-jwt Debian 13 2.7.1-1+deb13u1
- ruby-jwt Debian 14 3.2.0-1
debian advisories DEBIAN-CVE-2026-45363
- rubygem-jwt satellite utils 6.19, satellite utils 6.18, satellite utils 6.17 +9 more 2.10.3-1.el9sat
- ansible-core satellite maintenance 6.19, satellite maintenance 6.18, satellite maintenance 6.17 +6 more 1:2.16.19-1.el9sat
- ansible-test satellite capsule 6.19, satellite capsule 6.18, satellite capsule 6.17 +3 more 1:2.16.19-1.el9sat
- openvox-server satellite capsule 6.19, satellite capsule 6.18, satellite capsule 6.17 +5 more 8.15.2-1.el9sat
- python-aiohttp satellite capsule 6.17, satellite capsule 6.16, satellite 6.17 +1 more 3.14.3-1.el9pc
- python3.11-aiohttp satellite capsule 6.17, satellite capsule 6.16, satellite 6.17 +1 more 3.14.3-1.el9pc
- python3.12-aiohttp satellite capsule 6.19, satellite capsule 6.18, satellite 6.19 +1 more 3.14.3-1.el9pc
- python3.12-gitpython satellite capsule 6.19, satellite 6.19 3.1.59-1.el9pc
red hat advisories RHSA-2026:63387RHSA-2026:63385RHSA-2026:63386RHSA-2026:63327
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-45363 updated cvss 7.4
ruby-jwt: ruby-jwt: Authentication bypass due to empty key in HMAC verification
-
Red Hat Satellite 6 rubygem-jwtaffected: no fix available
-
Red Hat Satellite 6.16 for RHEL 8 rubygem-jwt 2.10.3-1.el8sat Red Hat Satellite 6.16 for RHEL 9 rubygem-jwt 2.10.3-1.el9satfixed: vendor fix RHSA-2026:63327
-
Red Hat Satellite 6.17 for RHEL 9 rubygem-jwt 2.10.3-1.el9sat, ansible-core 2.16.19-1.el9sat, ansible-test 2.16.19-1.el9satfixed: vendor fix RHSA-2026:63387
-
Red Hat Satellite 6.18 for RHEL 9 rubygem-jwt 2.10.3-1.el9sat, python3.12-pulpcore 3.73.30-3.el9pc, pulpcore-obsolete-packages 1.3.1-5.el9pcfixed: vendor fix RHSA-2026:63386
-
Red Hat Satellite 6.19 for RHEL 9 rubygem-jwt 2.10.3-1.el9satfixed: vendor fix RHSA-2026:63385
-
Red Hat 3scale API Management Platform 2 3scale-amp2/zync-rhel9, 3scale-amp2/system-rhel9not affected: vulnerable code not in execute path
-
Red Hat Hardened Images chunkah 0.6.0-2.hum1not affected: component not present
-
Red Hat Satellite 6.16 for RHEL 8 python-yarl 1.18.3-1.el8pc, satellite 6.16.13-1.el8sat, python-tablib 3.5.0-1.el8pc, python-aiohttp 3.14.3-1.el8pc, openvox-server 8.15.2-1.el8sat, python-aiosignal 1.4.0-1.el8pc, +14 more Red Hat Satellite 6.16 for RHEL 9 python-yarl 1.18.3-1.el9pc, satellite 6.16.13-1.el9sat, python-tablib 3.5.0-1.el9pc, python-aiohttp 3.14.3-1.el9pc, openvox-server 8.15.2-1.el9sat, python-aiosignal 1.4.0-1.el9pc, +14 more Red Hat Satellite 6.17 for RHEL 9 foreman 3.14.0.20-1.el9sat, python-yarl 1.18.3-1.el9pc, satellite 6.17.11-1.el9sat, python-aiohttp 3.14.3-1.el9pc, foreman-cli 3.14.0.20-1.el9sat, foreman-ec2 3.14.0.20-1.el9sat, +27 more Red Hat Satellite 6.18 for RHEL 9 satellite 6.18.9-1.el9sat, ansible-core 2.16.19-1.el9sat, ansible-test 2.16.19-1.el9sat, satellite-cli 6.18.9-1.el9sat, openvox-server 8.15.2-1.el9sat, satellite-common 6.18.9-1.el9sat, +9 more Red Hat Satellite 6.19 for RHEL 9 satellite 6.19.4-1.el9sat, foreman 3.18.0.10-1.el9sat, ansible-core 2.16.19-1.el9sat, ansible-test 2.16.19-1.el9sat, openvox-agent 8.28.1-1.el9sat, satellite-cli 6.19.4-1.el9sat, +26 morenot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- yes
- Technical impact
- total
- Assessed
- 3 mo ago
Exploit prediction
0.36% chance of exploitation in the next 30 days, higher than 30% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 9.1 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N |
| GitHub | 3.1 | 7.4 | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| rubygems | jwt | >=3.0.0, <3.2.0 <2.10.3 |
3.2.0 2.10.3 |
Affected products
- jwt ruby-jwt
Classification
References
- github.com /jwt/ruby-jwt/commit/9820020869ad147b941e49d96ab8beba35532964
-
github.com
/jwt/ruby-jwt/commit/db560b769a07bd9724e77ff505011ac01872106f
web
-
github.com
/jwt/ruby-jwt/security/advisories/GHSA-c32j-vqhx-rx3x
web
-
github.com
/jwt/ruby-jwt/releases/tag/v2.10.3
web
-
github.com
/jwt/ruby-jwt/releases/tag/v3.2.0
web
- lists.debian.org /debian-lts-announce/2026/09/msg00022.html
-
github.com
/jwt/ruby-jwt/issues/724
web
-
github.com
/jwt/ruby-jwt
package
-
github.com
/rubysec/ruby-advisory-db/blob/master/gems/jwt/CVE-2026-45363.yml
web
-
cve.org
/CVERecord?id=CVE-2026-45363
web
Sources
- CVE List CVE-2026-45363
- GitHub Advisory GHSA-c32j-vqhx-rx3x
- NVD CVE-2026-45363
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.