Multiple Transfer-Encoding headers misinterprets request payload
hyper's HTTP server code had a flaw that incorrectly understands some requests with multiple transfer-encoding headers to have a chunked payload, when it should have been rejected as illegal. This combined with an upstream HTTP proxy that understands the request payload boundary differently can result in "request smuggling" or "desync attacks".
- Products
- hyper
- Affected versions
- Not specified
- Fixed versions
- 0.12.36, 0.13.10, 0.14.3
- CVEs
- CVE-2021-21299
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 30 Oct 2026, 08:42 UTC · Revision 1
Source evidence
Multiple Transfer-Encoding headers misinterprets request payload
core-osv · Original sourcePublished 5 Feb 2021, 12:00 UTC
hyper's HTTP server code had a flaw that incorrectly understands some requests with multiple transfer-encoding headers to have a chunked payload, when it should have been rejected as illegal. This combined with an upstream HTTP proxy that understands the request payload boundary differently can result in "request smuggling" or "desync attacks".
osv:RUSTSEC-2021-0020
hyper
Fixed versions: 0.12.36, 0.13.10, 0.14.3
Complete source record
{
"id": "2415d7e58dd044463af5173154936bc240f17028c6e73814250220a4f7695907",
"url": "https://osv.dev/vulnerability/RUSTSEC-2021-0020",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Multiple Transfer-Encoding headers misinterprets request payload",
"summary": "hyper's HTTP server code had a flaw that incorrectly understands some requests with multiple transfer-encoding headers to have a chunked payload, when it should have been rejected as illegal. This combined with an upstream HTTP proxy that understands the request payload boundary differently can result in \"request smuggling\" or \"desync attacks\".",
"evidence": "osv:RUSTSEC-2021-0020",
"products": [
{
"name": {
"value": "hyper",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "0.12.36",
"evidence": "/affected/0/ranges"
},
{
"value": "0.13.10",
"evidence": "/affected/0/ranges"
},
{
"value": "0.14.3",
"evidence": "/affected/0/ranges"
}
],
"affected_versions": []
}
],
"severity": "high",
"structured": {
"id": "RUSTSEC-2021-0020",
"aliases": [
"CVE-2021-21299",
"GHSA-6hfq-h8hq-87mf",
"RUSTSEC-2021-0020"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H"
}
],
"affected": [
{
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "0.12.0"
},
{
"fixed": "0.12.36"
},
{
"introduced": "0.13.0-0"
},
{
"fixed": "0.13.10"
},
{
"introduced": "0.14.0-0"
},
{
"fixed": "0.14.3"
}
]
}
],
"package": {
"name": "hyper",
"purl": "pkg:cargo/hyper",
"ecosystem": "crates.io"
},
"database_specific": {
"cvss": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H",
"source": "https://github.com/rustsec/advisory-db/blob/osv/crates/RUSTSEC-2021-0020.json",
"categories": [
"format-injection"
],
"informational": null
},
"ecosystem_specific": {
"affects": {
"os": [],
"arch": [],
"functions": []
},
"affected_functions": null
}
}
],
"modified": "2026-10-12T18:00:04.410731844Z",
"provider": "osv",
"references": [
"https://crates.io/crates/hyper",
"https://rustsec.org/advisories/RUSTSEC-2021-0020.html",
"https://github.com/hyperium/hyper/commit/8f93123efef5c1361086688fe4f34c83c89cec02"
],
"provider_metadata": {
"license": "CC0-1.0"
}
},
"related_cves": [
{
"value": "CVE-2021-21299",
"evidence": "/aliases"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 306343,
"published_at": "2021-02-05T12:00:00+00:00"
}