Skip to main content

Rack EUVDEUVD-2026-18384

| CVE-2026-34786 MEDIUM
Incorrect Behavior Order: Validate Before Canonicalize (CWE-180)
2026-04-02 security-advisories@github.com GHSA-q4qf-9j86-f5mh
5.3
CVSS 3.1 · Vendor: github
View

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Leading special element handling
Impact

Despite the 5.3 CVSS score (moderate), the real-world risk depends heavily on deployment context. The attack vector is network-accessible and requires no authentication or user interaction (AV:N, AC:L, PR:N, UI:N), and the integrity impact (I:L) reflects the ability to bypass intended security headers rather than direct file manipulation. EPSS data is not provided, but the attack requires: (1) knowledge that Rack::Static with header_rules exists in the target application, (2) understanding of which headers are security-critical, and (3) confirmation that URL encoding bypasses rule matching. The absence of confirmed KEV status or public exploit code suggests this is a real but not actively weaponized vulnerability. However, for applications using Rack::Static as a Content-Security-Policy enforcement layer, this could be critical; for others, it is a defense-in-depth issue. Organizations should prioritize patching if they explicitly configure header_rules in Rack::Static.

Exploit ScenarioDerived

An attacker targeting a Rails application protected by a Content-Security-Policy header applied via Rack::Static header_rules discovers that requesting /assets/app.js applies the CSP header, preventing inline script injection. The attacker then requests /assets%2Fapp.js (percent-encoded path separator) and receives the same JavaScript file but without the CSP header, enabling them to inject or inject a malicious script that would normally be blocked. If the application relies solely on Rack::Static for CSP enforcement, this bypass allows script injection attacks against users loading the application.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Apr 02, 2026

Rack::Static fails to apply security-relevant response headers to URL-encoded variants of static file paths, allowing attackers to bypass header-based security controls by requesting percent-encoded forms of protected resources. This affects Rack versions prior to 2.2.23, 3.1.21, and 3.2.6, and is particularly dangerous in deployments relying on Rack::Static to enforce Content-Security-Policy, X-Frame-Options, or similar protective headers on static content. No public exploit code or active exploitation has been confirmed at time of analysis.

RemediationAI

Upgrade Rack immediately to version 2.2.23 or later (for 2.2.x series), 3.1.21 or later (for 3.1.x series), or 3.2.6 or later (for 3.2.x series), depending on which release series is in use. For Rails applications, running bundle update rack will apply the patch if Gemfile constraints permit; for other Rack-based applications, update Gemfile.lock or equivalent dependency file to reference the patched version and redeploy. As an interim workaround before patching, applications can validate or normalize PATH_INFO before passing to Rack::Static, or move security-critical header enforcement to the application layer or a reverse proxy (e.g., nginx, AWS CloudFront) that applies headers based on decoded URL path. Full remediation guidance is available in the GitHub Security Advisory at https://github.com/rack/rack/security/advisories/GHSA-q4qf-9j86-f5mh.

Affected VersionsENISA

rack 3.2.0, < 3.2.6
rack < 2.2.23
rack 3.0.0.beta1, < 3.1.21

Affected Packages

rubygems rack fix: 2.2.23, 3.1.21, 3.2.6
euvd rack_3_0_0_beta1 fix: 3.1.21

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in rubygems, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Rack::Static is a Ruby web server middleware that serves static files and applies conditional response headers via header_rules configuration. The vulnerability stems from a path normalization inconsistency: the applicable_rules method evaluates header_rules conditions against the raw, URL-encoded PATH_INFO variable, but the actual file-serving logic decodes the path before lookup and file delivery. This divergence (CWE-180: Incorrect Calculation of Buffer Size) means that a request for a path like /static%2Fdoc.html will bypass header matching rules intended for /static/doc.html, since the comparison operates on encoded form while file resolution uses decoded form. Applications using Rack::Static as a security boundary for static assets are particularly vulnerable when relying on header rules to enforce caching policies, MIME-type validation, or access controls.

Know when Rack gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (github) PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
SUSE MEDIUM
Red Hat 6.5 MEDIUM

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
None

Lifecycle Timeline

2
Patch released
Apr 03, 2026 - 02:30 nvd
Patch available
CVE Published
Apr 02, 2026 - 17:16 nvd
MEDIUM 5.3

DescriptionCVE.org

Rack is a modular Ruby web server interface. Prior to versions 2.2.23, 3.1.21, and 3.2.6, Rack::Static#applicable_rules evaluates several header_rules types against the raw URL-encoded PATH_INFO, while the underlying file-serving path is decoded before the file is served. As a result, a request for a URL-encoded variant of a static path can serve the same file without the headers that header_rules were intended to apply. In deployments that rely on Rack::Static to attach security-relevant response headers to static content, this can allow an attacker to bypass those headers by requesting an encoded form of the path. This issue has been patched in versions 2.2.23, 3.1.21, and 3.2.6.

Threat Intelligence Overview

EPSS Score
0.0%
Top 92% exploitable
Threat Intel
1
1 source
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

More in Rack

View all
CVE-2026-22860 HIGH POC
7.5 Feb 18

Directory traversal in Rack versions prior to 2.2.22, 3.1.20, and 3.2.5 allows unauthenticated remote attackers to list

CVE-2024-26141 HIGH POC
7.5 Feb 29

Rack is a modular Ruby web server interface. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable,

CVE-2024-25126 HIGH POC
7.5 Feb 29

Rack is a modular Ruby web server interface. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable,

CVE-2020-8184 HIGH POC
7.5 Jun 19

A reliance on cookies without validation/integrity check security vulnerability exists in rack < 2.2.3, rack < 2.1.4 tha

CVE-2022-30123 CRITICAL
10.0 Dec 05

A sequence injection vulnerability exists in Rack <2.0.9.1, <2.1.4.1 and <2.2.3.1 which could allow is a possible shell

CVE-2025-25184 MEDIUM POC
5.7 Feb 12

Rack provides an interface for developing web applications in Ruby. Rated medium severity (CVSS 5.7), this vulnerability

CVE-2026-25500 MEDIUM POC
5.4 Feb 18

Rack's Directory module fails to sanitize filenames when generating HTML directory listings, allowing attackers to craft

CVE-2026-39324 CRITICAL
9.3 Apr 07

Session authentication bypass in Rack::Session::Cookie 2.0.0 through 2.1.1 allows unauthenticated remote attackers to fo

CVE-2020-8161 HIGH
8.6 Jul 02

A directory traversal vulnerability exists in rack < 2.2.0 that allows an attacker perform directory traversal vulnerabi

CVE-2013-0263 MEDIUM
5.1 Feb 08

Rack::Session::Cookie in Rack 1.5.x before 1.5.2, 1.4.x before 1.4.5, 1.3.x before 1.3.10, 1.2.x before 1.2.8, and 1.1.x

CVE-2023-27530 HIGH
7.5 Mar 10

A DoS vulnerability exists in Rack <v3.0.4.2, <v2.2.6.3, <v2.1.4.3 and <v2.0.9.3 within in the Multipart MIME parsing co

CVE-2025-61772 HIGH
7.5 Oct 07

Memory exhaustion denial of service in the Ruby Rack web server interface (versions prior to 2.2.19, 3.1.17, and 3.2.2)

Vendor StatusVendor

SUSE

Severity: Medium
Product Status
openSUSE Tumbleweed Fixed
SUSE Linux Enterprise High Availability Extension 15 SP7 Fixed
SUSE Linux Enterprise High Availability Extension 15 SP7 Fixed
SUSE Linux Enterprise High Availability Extension 16.1 Fixed
SUSE Linux Enterprise High Performance Computing 15 SP7 Fixed

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy