Vulnerability DatabaseCVE-2026-119197

CVE-2026-119197: 
Python vulnerability analysis and mitigation

Overview

CVE-2026-119197 is a denial-of-service vulnerability in the pyasn1 Python library caused by quadratic-complexity binary REAL decoding. Affecting all versions up to and including 0.6.4 (vulnerable loop present from v0.2.1 through v0.6.4), the flaw allows an unauthenticated remote attacker to exhaust CPU resources by supplying a crafted ASN.1 REAL value with a large mantissa. The vulnerability was disclosed on October 27, 2026, and fixed in version 0.6.5. It carries a CVSS v3.1 base score of 7.5 (High) (GitHub Security Advisory).

Technical details

The root cause is CWE-407 (Inefficient Algorithmic Complexity) in RealPayloadDecoder.valueDecoder within pyasn1/codec/ber/decoder.py. The decoder builds a binary REAL mantissa one octet at a time using a loop that performs a left-shift on a growing integer (p <<= 8), an OR operation (p |= chunk[0]), and a byte-string suffix copy (chunk = chunk[1:]) for every octet — making decode time O(n²) in mantissa length. Because CER and DER reuse the BER REAL payload decoder, all three codec paths are affected. An attacker only needs to supply attacker-controlled ASN.1 data containing a REAL value that reaches any decode() call; no schema containing REAL is required, and the application does not need to further process the decoded object (GitHub Security Advisory, Fix Commit).

Impact

Successful exploitation causes CPU exhaustion on a single core, holding a decoding worker for seconds or longer per crafted request. Benchmarks on v0.6.4 showed BER decode times of ~0.33 s, ~1.3 s, ~6 s, and ~24 s for mantissa sizes of 50,000, 100,000, 200,000, and 400,000 octets respectively, with near-fourfold cost for each doubling of input size. The impact is limited to availability (no confidentiality or integrity loss), but repeated requests can sustain denial-of-service conditions against any service that passes attacker-controlled ASN.1 to pyasn1's BER, CER, or DER decoders (GitHub Security Advisory).

Exploitability

A proof-of-concept Python script is publicly available in the GitHub Security Advisory, demonstrating the quadratic CPU consumption by calling codec.decode() with crafted REAL-encoded ASN.1 input across BER, CER, and DER codecs. No authentication or user interaction is required, and attack complexity is low. There is no evidence of in-the-wild exploitation at this time, and the vulnerability is not listed in the CISA KEV catalog. The EPSS score is currently 0.0 (GitHub Security Advisory).

Exploitation steps

  1. Identify target: Locate a network-accessible service that uses pyasn1 ≤ 0.6.4 and passes attacker-controlled data to a BER, CER, or DER decode() call (e.g., SNMP agents, LDAP clients, TLS certificate parsers, or any application accepting ASN.1 input).
  2. Craft malicious payload: Construct a binary REAL TLV with a large mantissa. The 0x09 tag identifies REAL; 0x80 0x00 selects a positive base-2 binary value with a one-octet zero exponent, followed by N bytes of 0xff as the mantissa:
def real_value(mantissa_octets):
    content = b"\x80\x00" + b"\xff" * mantissa_octets
    length = len(content).to_bytes(3, "big")
    return b"\x09\x83" + length + content
  1. Deliver payload: Send the crafted ASN.1 data to the target application through whatever input channel it accepts (network socket, file upload, protocol message, etc.).
  2. Trigger decode: The application passes the data to pyasn1's decode() function, which enters the quadratic mantissa-building loop, consuming one CPU core for seconds or longer.
  3. Sustain DoS: Repeat requests with large mantissas (e.g., 200,000+ octets) to maintain CPU saturation and deny service to legitimate users (GitHub Security Advisory).

Indicators of compromise

  • Network: Repeated inbound requests containing ASN.1 data with unusually large REAL-encoded values (tag byte 0x09 followed by a long-form length and large payload); abnormally large ASN.1 messages compared to baseline traffic.
  • Process: Sustained high CPU utilization (near 100% on a single core) by the Python process handling ASN.1 decoding, particularly during or after receipt of network input; decode operations taking seconds rather than milliseconds.
  • Logs: Application logs showing slow or timed-out ASN.1 decode operations; increased error rates or timeouts in services dependent on pyasn1 decoding; log entries correlating high latency with specific source IPs sending large payloads.
  • File System: Presence of pyasn1 version 0.6.4 or earlier in the Python environment (pip show pyasn1 returning version ≤ 0.6.4) (GitHub Security Advisory).

Mitigation and workarounds

Upgrade pyasn1 to version 0.6.5 or later, which replaces the per-octet shift-and-slice loop with a single int.from_bytes(bytes(chunk), 'big') call, reducing mantissa decoding to linear time. The fix is applied in the shared BER payload decoder and covers BER, CER, and DER paths. If immediate upgrade is not possible, reject or strictly limit attacker-controlled ASN.1 input containing REAL values before passing it to pyasn1, and consider deploying rate limiting or CPU quotas on ASN.1 decoding operations to reduce exposure (GitHub Security Advisory, Release v0.6.5).

Community reactions

The vulnerability was reported by multiple researchers credited in the v0.6.5 release notes (manus-use, manus-pi, ucsurf, adriank31), suggesting coordinated responsible disclosure. The fix was merged and released promptly on October 27, 2026, the same day as the advisory publication. A Mastodon post from @thehackerwire noted the disclosure shortly after publication. No major vendor statements or significant media coverage beyond the GitHub advisory have been identified at this time (GitHub Security Advisory, Release v0.6.5).

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Affected

bookworm

pyasn1

Affected

sid

pyasn1

Affected

trixie

pyasn1

Affected

Ubuntu

Unknown

bionic (esm-infra)

pyasn1

Unknown

devel

pyasn1

Unknown

focal (esm-infra)

pyasn1

Unknown

jammy

pyasn1

Unknown

noble

pyasn1

Unknown

resolute

pyasn1

Unknown

trusty (esm-infra-legacy)

pyasn1

Unknown

xenial (esm-infra-legacy)

pyasn1

Unknown

Source: This report was generated using AI

Related Python vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

GHSA-wrc3-8c98-283wHIGH8.6
  • Python logoPython
  • boi-tech-rag-xml-document-loader
NoYesOct 30, 2026
GHSA-q749-wr8p-6pc9HIGH8.5
  • Python logoPython
  • boi-tech-ai-agent-telemetry-logger
NoYesOct 30, 2026
GHSA-vr42-692h-pmm6HIGH8.2
  • Python logoPython
  • boi-tech-ai-chat-markdown-renderer
NoYesOct 30, 2026
GHSA-q77q-crp2-mmjcHIGH7.5
  • Python logoPython
  • boi-tech-llm-output-regex-parser
NoYesOct 30, 2026
GHSA-9pg5-8c7x-5hfxMEDIUM6.9
  • Python logoPython
  • joserfc
NoYesOct 30, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management