Skip to main content

pyasn1 EUVDEUVD-2026-113350

| CVE-2026-119194 HIGH
Inefficient Algorithmic Complexity (CWE-407)
2026-10-29 GitHub_M GHSA-fm9c-5rcf-2q5p
7.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Reach schemaless ASN.1 decode endpoint
  2. Delivery
    Craft BER/CER/DER with many colliding long tag IDs
  3. Exploit
    Submit payload to decoder.decode (no schema)
  4. Execution
    Quadratic TagSet comparisons in _decodeComponentsSchemaless
  5. Persist
    Repeat requests to exhaust CPU
  6. Impact
    Service availability degraded

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V2 - Validation and Business Logic Algorithmic complexity limits
Exploitation Conditions

The application must decode attacker-controlled BER, CER, or DER bytes in SCHEMALESS mode - i.e. calling pyasn1's decoder without supplying an asn1Spec, which routes through ConstructedPayloadDecoderBase._decodeComponentsSchemaless (present in v0.6.4 and inherited by the CER and DER decoders). The malicious input is a constructed container holding many distinct long-form tag IDs whose TagSet hashes collide, so each insertion compares against a growing set of prior tags. Limiting factors: schema-based decoding (with an explicit asn1Spec) is not on this path and is unaffected; the attacker must be able to supply the raw encoded bytes; and impact is confined to CPU/availability - decoded values and order remain correct, so no data corruption or disclosure results.

Impact

This is a genuine but bounded availability issue, not a top-tier emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, base 7.5) is credible for a network-reachable, unauthenticated algorithmic-complexity DoS (CWE-407), and all impact is on availability only - the GHSA advisory explicitly states no confidentiality or integrity impact was observed, which contradicts the input 'Information Disclosure' tag. The vuln.today Decision label is 'this_week' (not act_now/emergency), consistent with a DoS rather than RCE. No CISA KEV listing and no EPSS score are provided in the input, so there is no signal of active or widespread exploitation; however, the GHSA advisory ships a complete, working proof-of-concept demonstrating ~4x CPU growth when component count doubles (0.438s→1.747s at 3,200→6,400 colliding components on CPython 3.12.10), so exploitability is well established in principle. The real-world priority is tempered by a key precondition the CVSS vector does not capture: exploitation only affects applications performing SCHEMALESS decoding of attacker-controlled input - AV:N/AC:L/PR:N describes severity under that condition but not the deployment prevalence of that code path. Net: patch promptly in services that decode untrusted ASN.1 without a schema, but this is a resource-exhaustion bug, not memory corruption or data exposure.

Exploit ScenarioDerived

An attacker sends a single small but crafted BER/CER/DER message to a network service that decodes it with pyasn1 in schemaless mode (e.g. decoder.decode() with no asn1Spec). The payload packs many distinct long-form tag IDs chosen so their TagSet hashes collide, forcing quadratic comparison work during decode and spiking CPU. A working proof-of-concept is published in the GHSA-fm9c-5rcf-2q5p advisory, and repeated such requests can exhaust CPU and degrade or deny service.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
1 PoC candidate (unverified) Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 29, 2026

Quadratic CPU consumption in pyasn1's schemaless BER/CER/DER container decoder (versions 0.3.3 through 0.6.4) lets remote unauthenticated attackers tie up a decoding service with a small, syntactically valid input. ConstructedPayloadDecoderBase._decodeComponentsSchemaless inserts every decoded component's TagSet into a growing set, so a container packed with distinct long-form tag IDs whose TagSet hashes collide forces each insertion to compare against all earlier colliding tags; the proof-of-concept script published in the upstream advisory shows decode CPU time rising from roughly 0.44s to 1.75s when the component count doubles from 3,200 to 6,400 on CPython 3.12.10 with pyasn1 0.6.4. Impact is confined to availability (decoded values and their order remain correct), exploitation requires the application to decode attacker-supplied bytes without an asn1Spec, no confirmed active exploitation or KEV listing exists at time of analysis, and the upstream fix is version 0.6.5, making this a this-week patch item rather than an emergency.

RemediationAI

Upgrade to pyasn1 0.6.5, the vendor-released fix (release tag v0.6.5; the changelog entry for Revision 0.6.5, released 26-10-2026, notes that schemaless container type tracking is bounded after two distinct tag sets to prevent quadratic CPU use from colliding long tag IDs, alongside several other decoder complexity fixes worth taking in the same bump). Where an immediate upgrade is not possible, pass an explicit asn1Spec for every decode of untrusted data so the schema-driven path is used instead of _decodeComponentsSchemaless - the trade-off is that a schema must be maintained and inputs containing tags outside it will be rejected rather than decoded generically. Additionally cap the byte size and component count of accepted BER/CER/DER input before decoding and run untrusted decoding in a worker with a CPU-time limit, accepting that such limits are tuning measures rather than a complete fix. Vendor advisory: https://github.com/pyasn1/pyasn1/security/advisories/GHSA-fm9c-5rcf-2q5p.

Affected VersionsENISA

pyasn1 0.3.3, < 0.6.5

Affected Packages

pypi pyasn1 fix: 0.6.5

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

pyasn1 is a pure-Python ASN.1 library whose BER, CER and DER codecs decode tag-length-value elements; when no asn1Spec is supplied the decoder runs in schemaless mode, routing constructed containers through ConstructedPayloadDecoderBase._decodeComponentsSchemaless. That routine tracked the TagSet of every decoded component in a set purely to tell whether the container holds one repeating type or several distinct types, but the set was never bounded. ASN.1 BER allows long-form tag identifiers encoded as a 0xBF lead byte plus base-128 continuation octets, so an attacker can choose arbitrary large tag IDs; by picking IDs whose TagSet hashes collide (the PoC derives them from sys.hash_info.modulus), every subsequent set insertion degrades into a linear scan over previously stored colliding tags, yielding O(n^2) behaviour in the number of components while the input stays small and valid. The weakness class is CWE-407 (inefficient algorithmic complexity), the CER and DER decoders inherit the same constructed-payload base class, and the 0.6.5 fix caps the classification set once two distinct tag sets have been seen, still returning every decoded component in its original order. Schema-driven decoding with an explicit asn1Spec does not take this path and is unaffected.

Know when Pyasn1 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 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Remote unauthenticated attacker supplies crafted bytes to a schemaless decoder with no user interaction (AV:N/AC:L/PR:N/UI:N); only CPU exhaustion results, so C:N/I:N/A:H.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
Patch available
Oct 29, 2026 - 20:18 EUVD
CVE Published
Oct 29, 2026 - 19:38 cve.org
HIGH 7.5

DescriptionCVE.org

pyasn1 is a generic ASN.1 library for Python. From 0.3.3 until 0.6.5, schemaless container decoding stores every decoded component's TagSet in a growing set even though only one-versus-multiple tag types must be distinguished. Attacker-controlled BER, CER, or DER input contains many distinct long tag IDs whose TagSet hashes collide. Each later set insertion compares against an increasing number of earlier colliding tags in ConstructedPayloadDecoderBase._decodeComponentsSchemaless, producing quadratic CPU work while decoded values and order remain valid. Repeated inputs can exhaust decoder CPU and reduce service availability. This issue is fixed in version 0.6.5.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 1 pypi packages depend on pyasn1 (1 direct, 0 indirect)

Ecosystem-wide dependent count for version 0.3.3.

Technical POC Analysis

Note on evidence: the supplied material is GitHub Security Advisory GHSA-fm9c-5rcf-2q5p plus its proof-of-concept script.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Latest POC

1 PoC candidate from github (unverified)

Sign in to open the public PoC links collected for this CVE.

Executive ViewAI

Why It Matters

A high-severity algorithmic complexity flaw in the widely-used pyasn1 library (versions 0.3.3 through 0.6.4) can allow remote unauthenticated attackers to degrade or stall any service that decodes untrusted BER/CER/DER data without a fixed schema. Because pyasn1 is a common transitive dependency across Python applications, identity, and network services, leadership should treat this as a broad availability and service-continuity risk until the library is upgraded and decoder exposure is mapped.

Business Impact: High
Compensating Controls

Vendor-released patch: 0.6.5

Threat Intelligence Overview

EPSS Score
0.4%
Top 63% exploitable
Prevalence
High
widely used Python ASN.1 library, common transitive dependency in crypto/SNMP/LDAP tooling
Threat Intel
1
1 sources
Social Media
2
Sightings
Data Quality
5 sources
Confidence: Medium

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 HIGH
CISA KEV No
Public POC Yes
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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· derived
Poc
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

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

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