CVE-2016-6581
HPACK Denial of Service vulnerability (HPACK Bomb)
Also known as GHSA-ffq8-576r-v26g, PYSEC-2017-87
Published 9 y ago · modified 4 mo ago · JSON
Summary
A HTTP/2 implementation built using any version of the Python HPACK library between v1.0.0 and v2.2.0 could be targeted for a denial of service attack, specifically a so-called "HPACK Bomb" attack. This attack occurs when an attacker inserts a header field that is exactly the size of the HPACK dynamic header table into the dynamic header table. The attacker can then send a header block that is simply repeated requests to expand that field in the dynamic table. This can lead to a gigantic compression ratio of 4,096 or better, meaning that 16kB of data can decompress to 64MB of data on the target machine.
Exploit prediction (EPSS)
1.88% probability of exploitation in the next 30 days, higher than 80% of all scored CVEs.
CVSS scores
| Assigned by | Version | Score | Vector |
|---|---|---|---|
| NVD | 3.0 | 7.5 | CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
| NVD | 2.0 | 7.8 | AV:N/AC:L/Au:N/C:N/I:N/A:C |
| GitHub | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
Affected packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| pypi | hpack | >=1.0.0, <2.3.0 <2.3.0 | 2.3.0 |
Classification
- Weakness
- CWE-399 Resource Management Errors
References
- securityfocus.com /bid/92315 · vdb-entry, x_refsource_BID, x_transferred
- python-hyper.org /hpack/en/latest/security/CVE-2016-6581.html · x_refsource_CONFIRM, x_transferred
- nvd.nist.gov /vuln/detail/CVE-2016-6581 · advisory
- github.com /advisories/GHSA-ffq8-576r-v26g · advisory
- github.com /pypa/advisory-database/tree/main/vulns/hpack/PYSEC-2017-87.yaml · web
- github.com /python-hyper/hpack · package
- web.archive.org /web/20200227233559/http://www.securityfocus.com/bid/92315 · web
- python-hyper.org /projects/hpack/en/stable/security/CVE-2016-6581.html · web
Sources
- CVE List: CVE-2016-6581
- GitHub Advisory: GHSA-ffq8-576r-v26g
- NVD: CVE-2016-6581
- OSV: PYSEC-2017-87
vulnwire keeps one entry per vulnerability: the CVE id wins, then GHSA; records that alias each other are merged. Machine-readable: JSON.