Skip to content

vonage-7.34.0.gem: 1 vulnerabilities (highest severity is: 7.4) #124

@mend-for-github-com

Description

@mend-for-github-com
Vulnerable Library - vonage-7.34.0.gem

Path to dependency file: /Gemfile.lock

Path to vulnerable library: /vendor/cache/jwt-3.1.2.gem

Vulnerabilities

Vulnerability Severity CVSS Exploit Maturity EPSS Dependency Type Fixed in (vonage version) Remediation Possible** Reachability
CVE-2026-45363 High 7.4 Not Defined jwt-3.1.2.gem Transitive N/A*

*For some transitive vulnerabilities, there is no version of direct dependency with a fix. Check the "Details" section below to see if there is a version of transitive dependency where vulnerability is fixed.

**In some cases, Remediation PR cannot be created automatically for a vulnerability despite the availability of remediation

Details

CVE-2026-45363

Vulnerable Library - jwt-3.1.2.gem

A pure ruby implementation of the RFC 7519 OAuth JSON Web Token (JWT) standard.

Library home page: https://rubygems.org/gems/jwt-3.1.2.gem

Path to dependency file: /Gemfile.lock

Path to vulnerable library: /vendor/cache/jwt-3.1.2.gem

Dependency Hierarchy:

  • vonage-7.34.0.gem (Root Library)
    • vonage-jwt-0.2.1.gem
      • jwt-3.1.2.gem (Vulnerable Library)

Found in base branch: master

Vulnerability Details

"JWT.decode(token, '', true, algorithm: 'HS256')" accepts an attacker-forged token. "OpenSSL::HMAC.digest('SHA256', '', payload)" returns a valid digest under an empty key, and no "raise InvalidKeyError if key.empty?" precondition exists in the HMAC algorithm. JWT.decode(token, "", true, algorithm: 'HS256') -> JWA::Hmac.verify(verification_key: "", ...) -> OpenSSL::HMAC.digest('SHA256', "", signing_input) == signature The same path is reached when a keyfinder block or key_finder: argument returns "", nil, or an array containing nil for an unknown key. JWT::Decode#find_key only rejects literal nil and empty arrays, and JWT::JWA::Hmac silently coerces nil to "" (signing_key ||= '') before signing. JWT.decode(token, nil, true, algorithms: ['HS256']) { |_h| "" } -> find_key returns "" # "" && !Array("").empty? == true -> JWA::Hmac.verify(verification_key: "", ...) -> verifies Common application patterns that produce the unsafe value: "redis.get("kid:#{kid}").to_s", ORM string columns with "default: ''", "ENV['SECRET'] || '', Hash.new('')" lookups, [primary, fallback] where fallback may be nil. Applications passing a non-empty static key:, or whose keyfinder returns nil / raises on miss, are not affected. The existing "enforce_hmac_key_length" option would block this but defaults to false. On OpenSSL ≥ 3.5 the empty-key HMAC.digest call no longer raises, so the OpenSSL-3.0 rescue in JWA::Hmac#sign does not fire. Affects HS256/HS384/HS512 via both JWT.decode (positional key and block keyfinder) and "JWT::EncodedToken#verify_signature!(key_finder:)"

Publish Date: 2026-05-18

URL: CVE-2026-45363

Threat Assessment

Exploit Maturity: Not Defined

EPSS:

CVSS 3 Score Details (7.4)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: High
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: High
    • Integrity Impact: High
    • Availability Impact: None

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Release Date: 2026-05-18

Fix Resolution: https://github.com/jwt/ruby-jwt.git - v3.2.0

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions