ruby-rack — security advisory
Rack is a modular Ruby web server interface. Prior to versions 2.2.23, 3.1.21, and 3.2.6, Rack::Multipart::Parser extracts the boundary parameter from multipart/form-data using a greedy regular expression. When a Content-Type header contains multiple boundary parameters, Rack selects the last one rather than the first. In deployments where an upstream proxy, WAF, or intermediary interprets the first boundary parameter, this mismatch can allow an attacker to smuggle multipart content past upstream inspection and have Rack parse a different body structure than the intermediary validated. This issue has been patched in versions 2.2.23, 3.1.21, and 3.2.6.
- Products
- ruby-rack
- Affected versions
- 1.5.2-1, 1.5.2-1ubuntu0.1~esm1, 1.5.2-3+deb8u3ubuntu1~esm10, 1.5.2-3+deb8u3ubuntu1~esm11, 1.5.2-3+deb8u3ubuntu1~esm2, 1.5.2-3+deb8u3ubuntu1~esm3, 1.5.2-3+deb8u3ubuntu1~esm4, 1.5.2-3+deb8u3ubuntu1~esm6, 1.5.2-3+deb8u3ubuntu1~esm7, 1.5.2-3+deb8u3ubuntu1~esm8, 1.5.2-3+deb8u3ubuntu1~esm9, 1.5.2-4, 1.6.4-2, 1.6.4-3, 1.6.4-3ubuntu0.1, 1.6.4-3ubuntu0.2, 1.6.4-3ubuntu0.2+esm1, 1.6.4-3ubuntu0.2+esm10, 1.6.4-3ubuntu0.2+esm2, 1.6.4-3ubuntu0.2+esm4, 1.6.4-3ubuntu0.2+esm5, 1.6.4-3ubuntu0.2+esm6, 1.6.4-3ubuntu0.2+esm7, 1.6.4-3ubuntu0.2+esm8, 1.6.4-3ubuntu0.2+esm9, 1.6.4-4, 1.6.4-4ubuntu0.1, 1.6.4-4ubuntu0.2, 1.6.4-4ubuntu0.2+esm1, 1.6.4-4ubuntu0.2+esm10, 1.6.4-4ubuntu0.2+esm2, 1.6.4-4ubuntu0.2+esm4, 1.6.4-4ubuntu0.2+esm5, 1.6.4-4ubuntu0.2+esm6, 1.6.4-4ubuntu0.2+esm7, 1.6.4-4ubuntu0.2+esm8, 1.6.4-4ubuntu0.2+esm9, 2.1.4-3, 2.1.4-4, 2.1.4-5, 2.1.4-5ubuntu1, 2.1.4-5ubuntu1+esm2, 2.1.4-5ubuntu1+esm3, 2.1.4-5ubuntu1+esm4, 2.1.4-5ubuntu1+esm5, 2.1.4-5ubuntu1.1, 2.1.4-5ubuntu1.1+esm1, 2.1.4-5ubuntu1.1+esm2, 2.1.4-5ubuntu1.2, 2.1.4-5ubuntu1.2+esm1, 2.1.4-5ubuntu1.2+esm2, 2.2.4-3, 2.2.7-1, 2.2.7-1.1, 2.2.7-1ubuntu0.1, 2.2.7-1ubuntu0.2, 2.2.7-1ubuntu0.3, 2.2.7-1ubuntu0.4, 2.2.7-1ubuntu0.5, 2.2.7-1ubuntu0.6, 3.1.16-0.1, 3.1.16-0.1ubuntu0.1, 3.1.16-0.1ubuntu0.2, 3.1.18-1, 3.1.18-1build1, 3.2.4-1ubuntu1
- Fixed versions
- 2.1.4-5ubuntu1.2+esm3, 2.2.7-1ubuntu0.7, 3.1.16-0.1ubuntu0.3
- CVEs
- CVE-2026-26961
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 1 Nov 2026, 10:26 UTC · Revision 1
Source evidence
Rack is a modular Ruby web server interface. Prior to versions 2.2.23, 3.1.21, and 3.2.6, Rack::Multipart::Parser extracts the boundary parameter from multipart/form-data using a greedy regular expression. When a Content-Type header contains multiple boundary parameters, Rack selects the last one rather than the first. In deployments where an upstream proxy, WAF, or intermediary interprets the first boundary parameter, this mismatch can allow an attacker to smuggle multipart content past upstream inspection and have Rack parse a different body structure than the intermediary validated. This issue has been patched in versions 2.2.23, 3.1.21, and 3.2.6.
osv:UBUNTU-CVE-2026-26961
ruby-rack
Fixed versions: Not specified
ruby-rack
Fixed versions: Not specified
ruby-rack
Fixed versions: Not specified
ruby-rack
Fixed versions: 2.1.4-5ubuntu1.2+esm3
ruby-rack
Fixed versions: 2.2.7-1ubuntu0.7
ruby-rack
Fixed versions: 3.1.16-0.1ubuntu0.3
ruby-rack
Fixed versions: Not specified
Complete source record
{
"id": "cb1bbb992e1b1ec107f412bd1e490a5f357a5e5ae92a1ef7989273151ad95f8c",
"url": "https://osv.dev/vulnerability/UBUNTU-CVE-2026-26961",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "UBUNTU-CVE-2026-26961",
"summary": "Rack is a modular Ruby web server interface. Prior to versions 2.2.23, 3.1.21, and 3.2.6, Rack::Multipart::Parser extracts the boundary parameter from multipart/form-data using a greedy regular expression. When a Content-Type header contains multiple boundary parameters, Rack selects the last one rather than the first. In deployments where an upstream proxy, WAF, or intermediary interprets the first boundary parameter, this mismatch can allow an attacker to smuggle multipart content past upstream inspection and have Rack parse a different body structure than the intermediary validated. This issue has been patched in versions 2.2.23, 3.1.21, and 3.2.6.",
"evidence": "osv:UBUNTU-CVE-2026-26961",
"products": [
{
"name": {
"value": "ruby-rack",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "1.5.2-1",
"evidence": "/affected/0/versions"
},
{
"value": "1.5.2-1ubuntu0.1~esm1",
"evidence": "/affected/0/versions"
},
{
"value": "1.5.2-3+deb8u3ubuntu1~esm2",
"evidence": "/affected/0/versions"
},
{
"value": "1.5.2-3+deb8u3ubuntu1~esm3",
"evidence": "/affected/0/versions"
},
{
"value": "1.5.2-3+deb8u3ubuntu1~esm4",
"evidence": "/affected/0/versions"
},
{
"value": "1.5.2-3+deb8u3ubuntu1~esm6",
"evidence": "/affected/0/versions"
},
{
"value": "1.5.2-3+deb8u3ubuntu1~esm7",
"evidence": "/affected/0/versions"
},
{
"value": "1.5.2-3+deb8u3ubuntu1~esm8",
"evidence": "/affected/0/versions"
},
{
"value": "1.5.2-3+deb8u3ubuntu1~esm9",
"evidence": "/affected/0/versions"
},
{
"value": "1.5.2-3+deb8u3ubuntu1~esm10",
"evidence": "/affected/0/versions"
},
{
"value": "1.5.2-3+deb8u3ubuntu1~esm11",
"evidence": "/affected/0/versions"
}
]
},
{
"name": {
"value": "ruby-rack",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "1.5.2-4",
"evidence": "/affected/1/versions"
},
{
"value": "1.6.4-2",
"evidence": "/affected/1/versions"
},
{
"value": "1.6.4-3",
"evidence": "/affected/1/versions"
},
{
"value": "1.6.4-3ubuntu0.1",
"evidence": "/affected/1/versions"
},
{
"value": "1.6.4-3ubuntu0.2",
"evidence": "/affected/1/versions"
},
{
"value": "1.6.4-3ubuntu0.2+esm1",
"evidence": "/affected/1/versions"
},
{
"value": "1.6.4-3ubuntu0.2+esm2",
"evidence": "/affected/1/versions"
},
{
"value": "1.6.4-3ubuntu0.2+esm4",
"evidence": "/affected/1/versions"
},
{
"value": "1.6.4-3ubuntu0.2+esm5",
"evidence": "/affected/1/versions"
},
{
"value": "1.6.4-3ubuntu0.2+esm6",
"evidence": "/affected/1/versions"
},
{
"value": "1.6.4-3ubuntu0.2+esm7",
"evidence": "/affected/1/versions"
},
{
"value": "1.6.4-3ubuntu0.2+esm8",
"evidence": "/affected/1/versions"
},
{
"value": "1.6.4-3ubuntu0.2+esm9",
"evidence": "/affected/1/versions"
},
{
"value": "1.6.4-3ubuntu0.2+esm10",
"evidence": "/affected/1/versions"
}
]
},
{
"name": {
"value": "ruby-rack",
"evidence": "/affected/2/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "1.6.4-4",
"evidence": "/affected/2/versions"
},
{
"value": "1.6.4-4ubuntu0.1",
"evidence": "/affected/2/versions"
},
{
"value": "1.6.4-4ubuntu0.2",
"evidence": "/affected/2/versions"
},
{
"value": "1.6.4-4ubuntu0.2+esm1",
"evidence": "/affected/2/versions"
},
{
"value": "1.6.4-4ubuntu0.2+esm2",
"evidence": "/affected/2/versions"
},
{
"value": "1.6.4-4ubuntu0.2+esm4",
"evidence": "/affected/2/versions"
},
{
"value": "1.6.4-4ubuntu0.2+esm5",
"evidence": "/affected/2/versions"
},
{
"value": "1.6.4-4ubuntu0.2+esm6",
"evidence": "/affected/2/versions"
},
{
"value": "1.6.4-4ubuntu0.2+esm7",
"evidence": "/affected/2/versions"
},
{
"value": "1.6.4-4ubuntu0.2+esm8",
"evidence": "/affected/2/versions"
},
{
"value": "1.6.4-4ubuntu0.2+esm9",
"evidence": "/affected/2/versions"
},
{
"value": "1.6.4-4ubuntu0.2+esm10",
"evidence": "/affected/2/versions"
}
]
},
{
"name": {
"value": "ruby-rack",
"evidence": "/affected/3/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.1.4-5ubuntu1.2+esm3",
"evidence": "/affected/3/ranges"
}
],
"affected_versions": [
{
"value": "2.1.4-3",
"evidence": "/affected/3/versions"
},
{
"value": "2.1.4-4",
"evidence": "/affected/3/versions"
},
{
"value": "2.1.4-5",
"evidence": "/affected/3/versions"
},
{
"value": "2.1.4-5ubuntu1",
"evidence": "/affected/3/versions"
},
{
"value": "2.1.4-5ubuntu1+esm2",
"evidence": "/affected/3/versions"
},
{
"value": "2.1.4-5ubuntu1+esm3",
"evidence": "/affected/3/versions"
},
{
"value": "2.1.4-5ubuntu1+esm4",
"evidence": "/affected/3/versions"
},
{
"value": "2.1.4-5ubuntu1+esm5",
"evidence": "/affected/3/versions"
},
{
"value": "2.1.4-5ubuntu1.1",
"evidence": "/affected/3/versions"
},
{
"value": "2.1.4-5ubuntu1.1+esm1",
"evidence": "/affected/3/versions"
},
{
"value": "2.1.4-5ubuntu1.1+esm2",
"evidence": "/affected/3/versions"
},
{
"value": "2.1.4-5ubuntu1.2",
"evidence": "/affected/3/versions"
},
{
"value": "2.1.4-5ubuntu1.2+esm1",
"evidence": "/affected/3/versions"
},
{
"value": "2.1.4-5ubuntu1.2+esm2",
"evidence": "/affected/3/versions"
}
]
},
{
"name": {
"value": "ruby-rack",
"evidence": "/affected/4/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "2.2.7-1ubuntu0.7",
"evidence": "/affected/4/ranges"
}
],
"affected_versions": [
{
"value": "2.2.4-3",
"evidence": "/affected/4/versions"
},
{
"value": "2.2.7-1",
"evidence": "/affected/4/versions"
},
{
"value": "2.2.7-1ubuntu0.1",
"evidence": "/affected/4/versions"
},
{
"value": "2.2.7-1ubuntu0.2",
"evidence": "/affected/4/versions"
},
{
"value": "2.2.7-1ubuntu0.3",
"evidence": "/affected/4/versions"
},
{
"value": "2.2.7-1ubuntu0.4",
"evidence": "/affected/4/versions"
},
{
"value": "2.2.7-1ubuntu0.5",
"evidence": "/affected/4/versions"
},
{
"value": "2.2.7-1ubuntu0.6",
"evidence": "/affected/4/versions"
}
]
},
{
"name": {
"value": "ruby-rack",
"evidence": "/affected/5/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "3.1.16-0.1ubuntu0.3",
"evidence": "/affected/5/ranges"
}
],
"affected_versions": [
{
"value": "2.2.7-1.1",
"evidence": "/affected/5/versions"
},
{
"value": "3.1.16-0.1",
"evidence": "/affected/5/versions"
},
{
"value": "3.1.16-0.1ubuntu0.1",
"evidence": "/affected/5/versions"
},
{
"value": "3.1.16-0.1ubuntu0.2",
"evidence": "/affected/5/versions"
}
]
},
{
"name": {
"value": "ruby-rack",
"evidence": "/affected/6/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "3.1.16-0.1",
"evidence": "/affected/6/versions"
},
{
"value": "3.1.18-1",
"evidence": "/affected/6/versions"
},
{
"value": "3.1.18-1build1",
"evidence": "/affected/6/versions"
},
{
"value": "3.2.4-1ubuntu1",
"evidence": "/affected/6/versions"
}
]
}
],
"severity": "medium",
"structured": {
"id": "UBUNTU-CVE-2026-26961",
"aliases": [
"UBUNTU-CVE-2026-26961"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N"
},
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"
},
{
"type": "Ubuntu",
"score": "medium"
}
],
"affected": [
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "ruby-rack",
"purl": "pkg:deb/ubuntu/ruby-rack?arch=source&distro=esm-infra-legacy%2Ftrusty",
"ecosystem": "Ubuntu:Pro:14.04:LTS"
},
"versions": [
"1.5.2-1",
"1.5.2-1ubuntu0.1~esm1",
"1.5.2-3+deb8u3ubuntu1~esm2",
"1.5.2-3+deb8u3ubuntu1~esm3",
"1.5.2-3+deb8u3ubuntu1~esm4",
"1.5.2-3+deb8u3ubuntu1~esm6",
"1.5.2-3+deb8u3ubuntu1~esm7",
"1.5.2-3+deb8u3ubuntu1~esm8",
"1.5.2-3+deb8u3ubuntu1~esm9",
"1.5.2-3+deb8u3ubuntu1~esm10",
"1.5.2-3+deb8u3ubuntu1~esm11"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-26961.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "librack-ruby",
"binary_version": "1.5.2-3+deb8u3ubuntu1~esm11"
},
{
"binary_name": "librack-ruby1.8",
"binary_version": "1.5.2-3+deb8u3ubuntu1~esm11"
},
{
"binary_name": "librack-ruby1.9.1",
"binary_version": "1.5.2-3+deb8u3ubuntu1~esm11"
},
{
"binary_name": "ruby-rack",
"binary_version": "1.5.2-3+deb8u3ubuntu1~esm11"
}
]
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "ruby-rack",
"purl": "pkg:deb/ubuntu/ruby-rack?arch=source&distro=esm-apps%2Fxenial",
"ecosystem": "Ubuntu:Pro:16.04:LTS"
},
"versions": [
"1.5.2-4",
"1.6.4-2",
"1.6.4-3",
"1.6.4-3ubuntu0.1",
"1.6.4-3ubuntu0.2",
"1.6.4-3ubuntu0.2+esm1",
"1.6.4-3ubuntu0.2+esm2",
"1.6.4-3ubuntu0.2+esm4",
"1.6.4-3ubuntu0.2+esm5",
"1.6.4-3ubuntu0.2+esm6",
"1.6.4-3ubuntu0.2+esm7",
"1.6.4-3ubuntu0.2+esm8",
"1.6.4-3ubuntu0.2+esm9",
"1.6.4-3ubuntu0.2+esm10"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-26961.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "ruby-rack",
"binary_version": "1.6.4-3ubuntu0.2+esm10"
}
]
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "ruby-rack",
"purl": "pkg:deb/ubuntu/ruby-rack?arch=source&distro=esm-apps%2Fbionic",
"ecosystem": "Ubuntu:Pro:18.04:LTS"
},
"versions": [
"1.6.4-4",
"1.6.4-4ubuntu0.1",
"1.6.4-4ubuntu0.2",
"1.6.4-4ubuntu0.2+esm1",
"1.6.4-4ubuntu0.2+esm2",
"1.6.4-4ubuntu0.2+esm4",
"1.6.4-4ubuntu0.2+esm5",
"1.6.4-4ubuntu0.2+esm6",
"1.6.4-4ubuntu0.2+esm7",
"1.6.4-4ubuntu0.2+esm8",
"1.6.4-4ubuntu0.2+esm9",
"1.6.4-4ubuntu0.2+esm10"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-26961.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "ruby-rack",
"binary_version": "1.6.4-4ubuntu0.2+esm10"
}
]
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
},
{
"fixed": "2.1.4-5ubuntu1.2+esm3"
}
]
}
],
"package": {
"name": "ruby-rack",
"purl": "pkg:deb/ubuntu/ruby-rack?arch=source&distro=esm-apps%2Fjammy",
"ecosystem": "Ubuntu:Pro:22.04:LTS"
},
"versions": [
"2.1.4-3",
"2.1.4-4",
"2.1.4-5",
"2.1.4-5ubuntu1",
"2.1.4-5ubuntu1+esm2",
"2.1.4-5ubuntu1+esm3",
"2.1.4-5ubuntu1+esm4",
"2.1.4-5ubuntu1+esm5",
"2.1.4-5ubuntu1.1",
"2.1.4-5ubuntu1.1+esm1",
"2.1.4-5ubuntu1.1+esm2",
"2.1.4-5ubuntu1.2",
"2.1.4-5ubuntu1.2+esm1",
"2.1.4-5ubuntu1.2+esm2"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-26961.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "ruby-rack",
"binary_version": "2.1.4-5ubuntu1.2+esm3"
}
],
"availability": "Available with Ubuntu Pro: https://ubuntu.com/pro"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
},
{
"fixed": "2.2.7-1ubuntu0.7"
}
]
}
],
"package": {
"name": "ruby-rack",
"purl": "pkg:deb/ubuntu/ruby-rack?arch=source&distro=noble",
"ecosystem": "Ubuntu:24.04:LTS"
},
"versions": [
"2.2.4-3",
"2.2.7-1",
"2.2.7-1ubuntu0.1",
"2.2.7-1ubuntu0.2",
"2.2.7-1ubuntu0.3",
"2.2.7-1ubuntu0.4",
"2.2.7-1ubuntu0.5",
"2.2.7-1ubuntu0.6"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-26961.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "ruby-rack",
"binary_version": "2.2.7-1ubuntu0.7"
}
],
"availability": "No subscription required"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
},
{
"fixed": "3.1.16-0.1ubuntu0.3"
}
]
}
],
"package": {
"name": "ruby-rack",
"purl": "pkg:deb/ubuntu/ruby-rack?arch=source&distro=questing",
"ecosystem": "Ubuntu:25.10"
},
"versions": [
"2.2.7-1.1",
"3.1.16-0.1",
"3.1.16-0.1ubuntu0.1",
"3.1.16-0.1ubuntu0.2"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-26961.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "ruby-rack",
"binary_version": "3.1.16-0.1ubuntu0.3"
}
],
"availability": "No subscription required"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "ruby-rack",
"purl": "pkg:deb/ubuntu/ruby-rack?arch=source&distro=resolute",
"ecosystem": "Ubuntu:26.04:LTS"
},
"versions": [
"3.1.16-0.1",
"3.1.18-1",
"3.1.18-1build1",
"3.2.4-1ubuntu1"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-26961.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "ruby-rack",
"binary_version": "3.2.4-1ubuntu1"
}
]
}
}
],
"modified": "2026-10-25T23:30:04.146233331Z",
"provider": "osv",
"upstream": [
"CVE-2026-26961"
],
"references": [
"https://ubuntu.com/security/CVE-2026-26961",
"https://www.cve.org/CVERecord?id=CVE-2026-26961",
"https://github.com/rack/rack/security/advisories/GHSA-vgpv-f759-9wx3",
"https://ubuntu.com/security/notices/USN-8182-1"
]
},
"related_cves": [
{
"value": "CVE-2026-26961",
"evidence": "/upstream"
}
],
"security_relevant": true,
"severity_evidence": "/severity/1/score"
},
"source_id": "core-osv",
"document_id": 446241,
"published_at": "2026-04-02T17:16:00+00:00"
}