---
id: CVE-2026-45363
title: >-
  ruby-jwt is a Ruby implementation of the RFC 7519 OAuth JSON Web Token
  standard
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', '', paylo…
severity: critical
cvss: 9.1
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N'
cwe:
  - CWE-287
  - CWE-326
  - CWE-1391
vendor: jwt
product: ruby-jwt
affected:
  - ruby-jwt < 2.10.3
  - 'ruby-jwt >= 3.0.0, < 3.2.0'
published: '2026-07-14'
updated: '2026-09-19'
sourceUpdated: '2026-09-19T18:16:48.657'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-45363'
references:
  - url: >-
      https://github.com/jwt/ruby-jwt/commit/9820020869ad147b941e49d96ab8beba35532964
    label: security-advisories@github.com
  - url: >-
      https://github.com/jwt/ruby-jwt/commit/db560b769a07bd9724e77ff505011ac01872106f
    label: security-advisories@github.com
  - url: 'https://github.com/jwt/ruby-jwt/releases/tag/v2.10.3'
    label: security-advisories@github.com
  - url: 'https://github.com/jwt/ruby-jwt/releases/tag/v3.2.0'
    label: security-advisories@github.com
  - url: 'https://github.com/jwt/ruby-jwt/security/advisories/GHSA-c32j-vqhx-rx3x'
    label: security-advisories@github.com
  - url: 'https://lists.debian.org/debian-lts-announce/2026/09/msg00022.html'
    label: af854a3a-2127-422b-91ae-364da2661108
tags:
  - nvd
  - cve.org
ssvc:
  exploitation: none
  automatable: 'yes'
  technicalImpact: total
  timestamp: '2026-07-15T13:24:12.081532Z'
epss: 0.00364
epssPercentile: 0.27605
ingestedAt: '2026-09-19T19:09:10.995Z'
---

## Overview

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.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
