Skip to main content

Python hpack EUVDEUVD-2026-85712

| CVE-2026-59980 MEDIUM
Uncontrolled Resource Consumption (CWE-400)
2026-09-23 GitHub_M GHSA-8v8h-hg4w-mvq2
6.3
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach HTTP/2 endpoint using hpack
  2. Delivery
    Craft header block with long 0xFF varint
  3. Exploit
    Send malformed HPACK input
  4. Execution
    Trigger O(n^2) varint decoding
  5. Impact
    Exhaust CPU / block processing

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires that the target application decode attacker-influenced HTTP/2 HPACK header data using python-hyper/hpack prior to version 4.2.0 - typically an internet-facing or otherwise reachable Python HTTP/2 server or client built on the h2/hyper stack. The specific trigger is a malformed variable-length integer encoded as a long sequence of 0xFF octets, which pre-fix has no upper bound and drives O(n^2) decoding. Limiting factors: the CVSS AT:P attack requirement reflects that the attacker must be able to submit unsanitized header input to the decoder; impact is confined to availability (a single processing path/worker), with no confidentiality or integrity effect. The documented workaround is to sanitize decoder input for long runs of 0xFF values.

Impact

This is a genuine but bounded denial-of-service issue, not a high-urgency emergency. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L) and score of 6.3 (Medium) are internally consistent with the description: network-reachable, low complexity, no privileges or user interaction, but only a LOW availability impact and an AT:P attack requirement (the target must be feeding attacker-controlled HPACK header blocks into the decoder). The only impact is availability (VA:L) - there is no confidentiality or integrity exposure - which correctly caps the severity. No EPSS score was supplied, there is no CISA KEV listing, and no weaponized POC is provided; the referenced GitHub artifacts are the security advisory (GHSA-8v8h-hg4w-mvq2) and the fix commit, not exploit code. Signals are therefore consistent rather than conflicting: a real, easily-triggered algorithmic-complexity DoS with modest single-connection impact, meriting routine patching rather than crisis response. Note the 'unbounded' O(n^2) computation means impact scales with input size, so an attacker who can send large malformed header blocks could tie up a worker thread - worth prioritizing for internet-facing HTTP/2 endpoints that pass untrusted input to hpack.

Exploit ScenarioDerived

An attacker sends a malformed HTTP/2 HPACK header block containing a long run of 0xFF bytes encoding an unbounded variable-length integer to a Python service that decodes headers with hpack (e.g. via the h2 stack). The decoder enters run-away O(n^2) computation, consuming CPU and blocking further processing of that input. No authentication or user interaction is required; no public exploit code is identified, though the fix commit and a regression test (b'\xff\xff\xff\xff\xff\xff') illustrate the trigger.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 23, 2026

Denial of service in python-hyper/hpack prior to 4.2.0 allows unauthenticated remote attackers to force run-away computation by supplying malformed HTTP/2 header input containing a variable-length integer encoded as a long run of 0xFF octets; the pre-fix decoder imposes no upper bound on the integer length, producing O(n^2) decoding work that effectively blocks the processing path. The library is a core HPACK header-compression dependency of Python HTTP/2 stacks (h2/hyper), so any internet-facing or otherwise reachable Python HTTP/2 server or client that decodes attacker-influenced headers is exposed, though impact is limited to availability of the affected worker with no confidentiality or integrity effect. No KEV entry or public exploit code was identified at time of analysis, and risk is bounded: the vendor-released fix in hpack 4.2.0 caps variable integer decoding to uint32, and a documented input-sanitization workaround exists.

RemediationAI

Upgrade to the vendor-released patch, hpack 4.2.0 or later (pip install --upgrade 'hpack>=4.2.0'), and re-resolve transitive pins so that h2 and downstream frameworks pick up the fixed release; the changelog for 4.2.0 documents the uint32 restriction on variable integer decoding. If immediate upgrade is not possible, apply the vendor-documented workaround of sanitizing decoder input: reject or truncate HPACK header blocks containing long runs of 0xFF continuation octets before they reach hpack's decoder, since the pre-fix code path can be driven into quadratic work by roughly five or more trailing 0xFF bytes in a single integer field. The trade-off is that this requires a fronting filter or proxy layer that understands HTTP/2 framing - if it buffers or rewrites header blocks it adds latency and memory pressure, and a naive byte-scan for 0xFF can false-positive on legitimate high-entropy header values (for example binary or non-ASCII header content), so scope the check to the integer-prefix position rather than the whole block. Where a reverse proxy terminates HTTP/2 in front of the Python application and down-converts to HTTP/1.1, the hpack decode path is removed from the attacker's reach entirely, which is the cleanest short-term compensating control at the cost of losing end-to-end HTTP/2 semantics. Note that limiting concurrent connections or request rates reduces the number of blocked decode paths but does not eliminate the per-request O(n^2) blowup, so it should be treated as a supplement, not a substitute, for the 4.2.0 upgrade. The full advisory is at https://github.com/python-hyper/hpack/security/advisories/GHSA-8v8h-hg4w-mvq2.

Affected VersionsENISA

hpack < 4.2.0

Affected Packages

pypi hpack fix: 4.2.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in pypi

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

HPACK is the header compression scheme defined in RFC 7541 for HTTP/2, and python-hyper/hpack implements its encoder and decoder in Python. Section 5.1 of RFC 7541 defines a variable-length integer representation with an indefinite size; the same section explicitly warns that encoders may emit large numbers of zero-continuation octets, wasting octets and potentially overflowing integer values, and mandates that encodings exceeding implementation limits in value or octet length be treated as decoding errors. The root cause here is CWE-400 (Uncontrolled Resource Consumption): decode_integer() accepted arbitrarily long continuation sequences without a bound, so a malicious header block containing many 0xFF bytes forced the decoder into quadratic-time work before any error was raised. The upstream fix introduces VARINT_MAX_LENGTH = 5 octets (enough for a 5-bit prefix plus a uint32 payload) and raises HPACKDecodingError when the index exceeds that limit, with a regression test asserting that b'\xff' * 6 fails. The referenced commit also constrains round-trip property tests to max_value=2**32, confirming the intended decode range. The advisory cross-references the Go x/net/http2/hpack decoder and the Rust http2 crate decoder implementations, both of which encode structurally similar bound checks in their integer readers - useful comparison points for implementers porting or auditing equivalent logic. The vulnerability is network-reachable (AV:N), requires no privileges or user interaction, and needs the attack precondition AT:P reflected in the CVSS 4.0 vector: the attacker must be able to feed unsanitized header bytes to the decoder, which is normal for an HTTP/2 peer but is a genuine environmental precondition.

Know when Hpack gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 6.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
vuln.today AI 5.3 MEDIUM

Network-reachable malformed header input, no auth or interaction, low-complexity algorithmic DoS with only partial single-path availability impact and no confidentiality or integrity effect.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
SUSE 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Red Hat 5.3 LOW

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Sep 23, 2026 - 23:03 EUVD

DescriptionCVE.org

hpack is an HTTP/2 Header Encoding for Python. Prior to version 4.2.0, unbounded variable integer decoding can cause run-away computation on malformed input leading to O(n^2) runtime, effectively blocking further processing with large enough unsanitized input. A fix is available in python-hyper/hpack v4.2.0 to restricted variable integer decoding to uint32 to prevent run-away computation. As a workaround, sanitize input to hpack decoder for long sequences of 0xFF values to prevent malicious use.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 9,293 pypi packages depend on hpack (37 direct, 9,264 indirect)

Ecosystem-wide dependent count for version 4.2.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 80% exploitable
Prevalence
Medium
core HPACK library underpinning Python HTTP/2 stacks (h2/hyper), but not ubiquitous
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

52
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
openSUSE Tumbleweed Fixed
SUSE Linux Enterprise Module for Python 3 15 SP7 Affected
SUSE Linux Enterprise Server 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Server for SAP Applications 15 SP7 Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy