CVE-2026-45363
Deferred Deferred - Pending Action

HMAC Signature Bypass in ruby-jwt

Vulnerability report for CVE-2026-45363, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-07-14

Last updated on: 2026-07-15

Assigner: GitHub, Inc.

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 Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-07-14
Last Modified
2026-07-15
Generated
2026-08-04
AI Q&A
2026-07-15
EPSS Evaluated
2026-08-03
NVD

Affected Vendors & Products

Showing 4 associated CPEs
Vendor Product Version / Range
jwt ruby-jwt 2.10.3
jwt ruby-jwt 3.2.0
jwt ruby-jwt to 2.10.3 (exc)
jwt ruby-jwt to 3.2.0 (exc)

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-326 The 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-287 When an actor claims to have a given identity, the product does not prove or insufficiently proves that the claim is correct.
CWE-1391 The product uses weak credentials (such as a default key or hard-coded password) that can be calculated, derived, reused, or guessed by an attacker.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability affects the ruby-jwt library versions before 2.10.3 and 3.2.0. It allows an attacker to forge a valid JSON Web Token (JWT) by exploiting an empty key in HMAC verification. The library incorrectly accepts tokens verified with an empty key, bypassing signature validation for HS256, HS384, and HS512 algorithms.

Detection Guidance

To detect this vulnerability, check if your system uses ruby-jwt versions prior to 2.10.3 or 3.2.0. Run: gem list jwt to verify the installed version. If vulnerable, update immediately to a patched version.

Impact Analysis

An attacker could forge tokens to impersonate users, gain unauthorized access to systems, or escalate privileges. Applications using vulnerable versions of ruby-jwt for authentication or authorization are at risk of accepting malicious tokens as valid.

Compliance Impact

This vulnerability could lead to unauthorized data access or breaches, violating confidentiality requirements in GDPR and HIPAA. Organizations using affected versions may fail compliance audits due to inadequate JWT validation, risking legal penalties and reputational damage.

Mitigation Strategies

Upgrade ruby-jwt to version 2.10.3 or later, or 3.2.0 or later. This fixes the issue where JWT.decode accepts forged tokens due to empty key handling in HMAC verification for HS256, HS384, and HS512 algorithms.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-45363. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart