{"schemaVersion":3,"id":"CVE-2026-26962","aliases":["UBUNTU-CVE-2026-26962","DEBIAN-CVE-2026-26962","CGA-36xg-gfm6-9xfh","CGA-4xvm-xhpq-72ww","CGA-5696-7j59-75g7","CGA-59h5-f4g8-chw8","CGA-6gp7-2rj5-p2x4","CGA-7237-cx27-c7j3","CGA-7w7m-2m66-f38q","CGA-cqp8-pqp4-8m7j","CGA-gjfr-v792-295c","GHSA-rx22-g9mx-qrhv","CGA-r8fv-77vv-mmw4","CGA-vjw6-mf28-wxcv","CGA-xhvp-9jr6-p9vj"],"status":"published","duplicateOf":null,"title":null,"description":"Rack is a modular Ruby web server interface. From version 3.2.0 to before version 3.2.6, Rack::Multipart::Parser unfolds folded multipart part headers incorrectly. When a multipart header contains an obs-fold sequence, Rack preserves the embedded CRLF in parsed parameter values such as filename or name instead of removing the folded line break during unfolding. As a result, applications that later reuse those parsed values in HTTP response headers may be vulnerable to downstream header injection or response splitting. This issue has been patched in version 3.2.6.","dates":{"published":"2026-04-02T17:10:17.091Z","modified":"2026-04-03T18:13:06.632Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":6.5,"severity":"medium","version":"3.1","versionLabel":"v3.1","source":"NVD","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":4.8,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Ubuntu","score":6.5,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N","exploitability":10,"impact":4.2,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Debian","score":6.5,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N","exploitability":10,"impact":4.2,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Chainguard","score":4.8,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N","exploitability":5.6,"impact":4.2,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Rubygems","score":4.8,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N","exploitability":5.6,"impact":4.2,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":6.5,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.00245,"percentile":0.1477,"severity":"low","asOf":"2026-10-20T00:00:00.000Z","change":{"pp":0.018000000000000002,"baselineDate":"2026-09-20T00:00:00.000Z","baselineScore":0.00227},"history":[{"date":"2026-09-14T00:00:00.000Z","score":0.00227,"percentile":null},{"date":"2026-09-15T00:00:00.000Z","score":0.00227,"percentile":null},{"date":"2026-09-16T00:00:00.000Z","score":0.00227,"percentile":null},{"date":"2026-09-17T00:00:00.000Z","score":0.00227,"percentile":null},{"date":"2026-09-18T00:00:00.000Z","score":0.00227,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.00227,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.00227,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00227,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00227,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00227,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00245,"percentile":0.1477}],"last30":[{"date":"2026-09-20T00:00:00.000Z","score":0.00227,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00227,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00227,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00227,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00245,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00245,"percentile":0.1477}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-93","name":"Improper Neutralization of CRLF Sequences ('CRLF Injection')","description":"The product uses CRLF (carriage return line feeds) as a special element, e.g. to separate lines or records, but it does not neutralize or incorrectly neutralizes CRLF sequences from inputs.","type":"weakness","status":"Draft","abstraction":"Base","likelihoodOfExploit":null,"url":"https://cwe.mitre.org/data/definitions/93.html"}],"affected":[{"vendor":"chainguard","product":"pact-broker-docker","name":"pact-broker-docker","label":"pact-broker-docker","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/pact-broker-docker","purlType":"apk","versions":[{"text":"< 2.137.0.2.118.0-r4","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 2.137.0.2.118.0-r4","eol":null,"hubHref":null},{"vendor":"chainguard","product":"pact-broker-docker-fips","name":"pact-broker-docker-fips","label":"pact-broker-docker-fips","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/pact-broker-docker-fips","purlType":"apk","versions":[{"text":"< 2.137.0.2.118.0-r2","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 2.137.0.2.118.0-r2","eol":null,"hubHref":null},{"vendor":"chainguard","product":"ruby3.2-rails-7.2","name":"ruby3.2-rails-7.2","label":"ruby3.2-rails-7.2","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/ruby3.2-rails-7.2","purlType":"apk","versions":[{"text":"< 7.2.3.1-r1","noFixRecorded":false,"fixedIn":null},{"text":"< 7.2.3.1-r2","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 7.2.3.1-r1 | < 7.2.3.1-r2","eol":null,"hubHref":null},{"vendor":"chainguard","product":"ruby3.2-rails-8.0","name":"ruby3.2-rails-8.0","label":"ruby3.2-rails-8.0","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/ruby3.2-rails-8.0","purlType":"apk","versions":[{"text":"< 8.0.5-r0","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 8.0.5-r0","eol":null,"hubHref":null},{"vendor":"chainguard","product":"ruby3.4-rails-7.2","name":"ruby3.4-rails-7.2","label":"ruby3.4-rails-7.2","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/ruby3.4-rails-7.2","purlType":"apk","versions":[{"text":"< 7.2.3.1-r1","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 7.2.3.1-r1","eol":null,"hubHref":null},{"vendor":"chainguard","product":"ruby3.4-rails-8.0","name":"ruby3.4-rails-8.0","label":"ruby3.4-rails-8.0","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/ruby3.4-rails-8.0","purlType":"apk","versions":[{"text":"< 8.0.5-r1","noFixRecorded":false,"fixedIn":null},{"text":"< 8.0.5-r2","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 8.0.5-r1 | < 8.0.5-r2","eol":null,"hubHref":null},{"vendor":"debian","product":"ruby-rack","name":"ruby-rack","label":"ruby-rack","ecosystem":"Debian","cpePart":null,"purl":"pkg:deb/debian/ruby-rack","purlType":"deb","versions":[{"text":"< 3.1.20-0+deb13u2","noFixRecorded":false,"fixedIn":null},{"text":"< 3.2.6-2","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 3.1.20-0+deb13u2 | < 3.2.6-2","eol":null,"hubHref":null},{"vendor":"ubuntu","product":"ruby-rack","name":"ruby-rack","label":"ruby-rack","ecosystem":"Ubuntu","cpePart":null,"purl":"pkg:deb/ubuntu/ruby-rack","purlType":"deb","versions":[{"text":"All versions","noFixRecorded":true,"fixedIn":null},{"text":"< 2.2.7-1ubuntu0.7","noFixRecorded":false,"fixedIn":null},{"text":"< 3.1.16-0.1ubuntu0.3","noFixRecorded":false,"fixedIn":null}],"versionsText":"All versions (No fix recorded) | < 2.2.7-1ubuntu0.7 | < 3.1.16-0.1ubuntu0.3","eol":null,"hubHref":null},{"vendor":"RubyGems","product":"rack","name":"rack","label":"rack","ecosystem":"RubyGems","cpePart":null,"purl":"pkg:gem/rack","purlType":"gem","versions":[{"text":"≥ 3.2.0, < 3.2.6","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 3.2.0, < 3.2.6","eol":null,"hubHref":null},{"vendor":"rack","product":"rack","name":"rack","label":"rack","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"≥ 3.2.0, < 3.2.6","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 3.2.0, < 3.2.6","eol":null,"hubHref":"/vendor/rack/rack"}],"affectedCount":10,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/rack/rack/security/advisories/GHSA-rx22-g9mx-qrhv","label":"github.com/rack/rack/security/advisories/GHSA-rx22-g9mx-qrhv","hostname":"github.com","tags":["X Refsource CONFIRM","Advisory","WEB","Mitigation","Vendor Advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-26962","label":"ubuntu.com/security/CVE-2026-26962","hostname":"ubuntu.com","tags":["REPORT"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-26962","label":"www.cve.org/CVERecord?id=CVE-2026-26962","hostname":"www.cve.org","tags":["REPORT"]},{"url":"https://ubuntu.com/security/notices/USN-8182-1","label":"ubuntu.com/security/notices/USN-8182-1","hostname":"ubuntu.com","tags":["Advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-26962","label":"security-tracker.debian.org/tracker/CVE-2026-26962","hostname":"security-tracker.debian.org","tags":["Advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/26xxx/CVE-2026-26962.json","label":"github.com/CVEProject/cvelistV5/tree/main/cves/2026/26xxx/CVE-2026-26962.json","hostname":"github.com","tags":["Advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-26962","label":"nvd.nist.gov/vuln/detail/CVE-2026-26962","hostname":"nvd.nist.gov","tags":["Advisory"]},{"url":"https://github.com/rack/rack","label":"github.com/rack/rack","hostname":"github.com","tags":["PACKAGE"]},{"url":"https://github.com/rubysec/ruby-advisory-db/blob/master/gems/rack/CVE-2026-26962.yml","label":"github.com/rubysec/ruby-advisory-db/blob/master/gems/rack/CVE-2026-26962.yml","hostname":"github.com","tags":["WEB"]}],"lineage":{"upstream":[],"downstream":["OPENSUSE-SU-2026:21640-1","SUSE-SU-2026:23321-1","SUSE-SU-2026:2487-1"],"duplicates":[],"related":["CGA-99F4-28J2-7VXM","OPENSUSE-SU-2026:21640-1","SUSE-SU-2026:23321-1","SUSE-SU-2026:2487-1","USN-8182-1"]},"timeline":[{"kind":"published","date":"2026-04-02T17:10:17.091Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-04-03T18:13:06.632Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":26,"level":"medium","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-21T01:32:56.412Z","stale":false,"partial":false}}