MEDIUMCVSS v3.1 5.9Vulnerability

CVE-2026-126351

### Impact `Addressable::URI.normalize_path` takes time quadratic in the number of nested dot segments in a path (e.g., `"/" + "a/" * n + "../" * n`, which for n = 3 is `/a/a/a/../../../`), because it removes one dot segment per pass over the whole path. `URI#normalize`, `URI#normalized_path`, `URI#==`, `URI#===` and `URI#join` all call it. Normalizing, comparing or joining a URI taken from user input can result in uncontrolled resource consumption, leading to denial of service. On 2.9.0, normalizing a 34 KB path takes about 3.5 seconds on MRI Ruby 4.0, and the cost grows with the square of the path length. This affects every Ruby implementation, including MRI Ruby 3.2 and later. `URI.parse` by itself is unaffected, as is code that never normalizes, compares, or joins URIs from untrusted sources. ### Affected Versions This vulnerability affects all versions of Addressable prior to 2.9.1. It is fixed in 2.9.1. ### Workarounds - Limit the length of URIs taken from user input before calling `normalize`, `==` or `join` on them. Web servers often limit request lines to about 8 KB, which keeps the cost to about 150 milliseconds per call on typical hardware, but URIs from other sources (request bodies, headers such as `Location`, stored data) may not be limited. - Reject paths with many dot segments before normalizing them. ### Credits Reported by Matthew Mongeau (@halogenandtoast), Ruby Central Gem Security, who also suggested the single-pass approach used in the fix. ### For more information If there are any questions or comments about this advisory: * [Open an issue](https://github.com/sporkmonger/addressable/issues)

Properties

Severity
medium
Summary
Addressable: Denial of service in URI path normalization
Nvd fetched at
2026-11-14T00:40:25.638091+00:00
Epss score
0.00407
Cvss severity
MEDIUM
Cvss score
5.9
Retrieved at
2026-11-14T00:51:03+00:00
Ghsa published
2026-11-12T22:35:33Z
Source url
https://github.com/advisories/GHSA-qq38-m9mg-xjj5
Ghsa updated
2026-11-12T22:35:34Z
Ghsa id
GHSA-qq38-m9mg-xjj5
Last source
FIRST EPSS
Score
5.9
Cvss version
3.1
Cve id
CVE-2026-126351
Cvss vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
First seen by Signal
2026-11-13T00:03:24+00:00
Name
CVE-2026-126351
Is ghsa only
false
Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H

Related Entities (3)

AFFECTS (1)

HAS_WEAKNESS (1)

VULNERABLE_TO (1)

Related research

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-126351 (CVSS v3.1 5.9) — Ninja Signal Threat Intelligence | Ninja Signal