{"affected":[{"product":"addressable","source":"CNA: GitHub_M","vendor":"sporkmonger","versions":[{"status":"affected","version":"< 2.9.1"}]},{"defaultStatus":"unaffected","ecosystem":"RubyGems","packageName":"addressable","product":"addressable","source":"OSV GHSA-qq38-m9mg-xjj5","vendor":"","versions":[{"status":"affected","version":"0.1.0","versionType":"RubyGems"},{"status":"affected","version":"0.1.1","versionType":"RubyGems"},{"status":"affected","version":"0.1.2","versionType":"RubyGems"},{"status":"affected","version":"1.0.0","versionType":"RubyGems"},{"status":"affected","version":"1.0.1","versionType":"RubyGems"},{"status":"affected","version":"1.0.2","versionType":"RubyGems"},{"status":"affected","version":"1.0.3","versionType":"RubyGems"},{"status":"affected","version":"1.0.4","versionType":"RubyGems"},{"status":"affected","version":"2.0.0","versionType":"RubyGems"},{"status":"affected","version":"2.0.1","versionType":"RubyGems"},{"status":"affected","version":"2.0.2","versionType":"RubyGems"},{"status":"affected","version":"2.1.0","versionType":"RubyGems"},{"status":"affected","version":"2.1.1","versionType":"RubyGems"},{"status":"affected","version":"2.1.2","versionType":"RubyGems"},{"status":"affected","version":"2.2.0","versionType":"RubyGems"},{"status":"affected","version":"2.2.1","versionType":"RubyGems"},{"status":"affected","version":"2.2.2","versionType":"RubyGems"},{"status":"affected","version":"2.2.3","versionType":"RubyGems"},{"status":"affected","version":"2.2.4","versionType":"RubyGems"},{"status":"affected","version":"2.2.5","versionType":"RubyGems"},{"status":"affected","version":"2.2.6","versionType":"RubyGems"},{"status":"affected","version":"2.2.7","versionType":"RubyGems"},{"status":"affected","version":"2.2.8","versionType":"RubyGems"},{"status":"affected","version":"2.3.2","versionType":"RubyGems"},{"status":"affected","version":"2.3.3","versionType":"RubyGems"},{"status":"affected","version":"2.3.4","versionType":"RubyGems"},{"status":"affected","version":"2.3.5","versionType":"RubyGems"},{"status":"affected","version":"2.3.6","versionType":"RubyGems"},{"status":"affected","version":"2.3.7","versionType":"RubyGems"},{"status":"affected","version":"2.3.8","versionType":"RubyGems"},{"status":"affected","version":"2.4.0","versionType":"RubyGems"},{"status":"affected","version":"2.5.0","versionType":"RubyGems"},{"status":"affected","version":"2.5.1","versionType":"RubyGems"},{"status":"affected","version":"2.5.2","versionType":"RubyGems"},{"status":"affected","version":"2.6.0","versionType":"RubyGems"},{"status":"affected","version":"2.7.0","versionType":"RubyGems"},{"status":"affected","version":"2.8.0","versionType":"RubyGems"},{"status":"affected","version":"2.8.1","versionType":"RubyGems"},{"status":"affected","version":"2.8.10","versionType":"RubyGems"},{"status":"affected","version":"2.8.2","versionType":"RubyGems"},{"status":"affected","version":"2.8.3","versionType":"RubyGems"},{"status":"affected","version":"2.8.4","versionType":"RubyGems"},{"status":"affected","version":"2.8.5","versionType":"RubyGems"},{"status":"affected","version":"2.8.6","versionType":"RubyGems"},{"status":"affected","version":"2.8.7","versionType":"RubyGems"},{"status":"affected","version":"2.8.8","versionType":"RubyGems"},{"status":"affected","version":"2.8.9","versionType":"RubyGems"},{"status":"affected","version":"2.9.0","versionType":"RubyGems"},{"events":[{"introduced":"0"},{"fixed":"2.9.1"}],"status":"unknown","version":"0","versionType":"ECOSYSTEM"}]}],"cveId":"CVE-2026-126351","cwes":["CWE-407"],"description":"Addressable is an alternative implementation to the URI implementation that is part of Ruby's standard library. Prior to 2.9.1, Addressable::URI.normalize_path repeatedly scans and rewrites paths while removing only one nested dot segment per pass, producing quadratic work. URI#normalize, URI#normalized_path, URI#join, URI#==, and URI#=== inherit the behavior, so processing a sufficiently long attacker-controlled URI can consume a worker thread and cause denial of service on every Ruby implementation. URI.parse alone and code that never normalizes, compares, or joins untrusted URIs are unaffected. This issue is fixed in version 2.9.1.","epss":null,"exploits":[],"kev":null,"metrics":[{"score":5.9,"severity":"medium","source":"CNA: GitHub_M","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","version":"3.1"},{"score":5.9,"severity":"medium","source":"NVD: security-advisories@github.com","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H","version":"3.1"}],"modifiedAt":1794523503586,"publishedAt":1794521139079,"references":[{"source":"CNA: GitHub_M","tags":["x_refsource_CONFIRM"],"url":"https://github.com/sporkmonger/addressable/security/advisories/GHSA-qq38-m9mg-xjj5"},{"source":"CNA: GitHub_M","tags":["x_refsource_MISC"],"url":"https://github.com/sporkmonger/addressable/commit/25c7c412a2f7e06c3cac92872e831f6d053703c5"},{"source":"CNA: GitHub_M","tags":["x_refsource_MISC"],"url":"https://github.com/sporkmonger/addressable/releases/tag/addressable-2.9.1"},{"source":"security-advisories@github.com","tags":[],"url":"https://github.com/sporkmonger/addressable/commit/25c7c412a2f7e06c3cac92872e831f6d053703c5"},{"source":"security-advisories@github.com","tags":[],"url":"https://github.com/sporkmonger/addressable/releases/tag/addressable-2.9.1"},{"source":"security-advisories@github.com","tags":[],"url":"https://github.com/sporkmonger/addressable/security/advisories/GHSA-qq38-m9mg-xjj5"},{"source":"OSV / GitHub Security Advisories","tags":["advisory"],"url":"https://github.com/advisories/GHSA-qq38-m9mg-xjj5"},{"source":"OSV / GitHub Security Advisories","tags":["osv"],"url":"https://osv.dev/vulnerability/GHSA-qq38-m9mg-xjj5"}],"remediation":[{"kind":"fix","source":"OSV GHSA-qq38-m9mg-xjj5","text":"addressable (RubyGems): OSV reports a fixed version 2.9.1. Check the advisory for supported release branches.","url":"https://github.com/advisories/GHSA-qq38-m9mg-xjj5"}],"revision":"2f16bb602a1f12834347a7689e81a12225f060502911e55042b43a988b3eedad","sources":[{"modifiedAt":1794521139079,"name":"CNA: GitHub_M","retrievedAt":1794524916614,"url":"https://www.cve.org/CVERecord?id=CVE-2026-126351"},{"modifiedAt":1794521960387,"name":"NVD","retrievedAt":1794529645142,"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-126351"},{"modifiedAt":1794523503586,"name":"OSV / GitHub Security Advisories","retrievedAt":1794524917280,"url":"https://osv.dev/vulnerability/GHSA-qq38-m9mg-xjj5"}],"ssvc":null,"status":"published","title":"Addressable: Denial of service in URI path normalization","updatedAt":1794529645142}