Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain adjacent-network access to UPnP host
-
ExploitSend SOAP request with deeply nested XML
-
ExecutionTrigger unbounded recursion in ixml DOM traversal
-
ImpactExhaust service-thread stack and crash service
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Recursion depth limits
|
| Exploitation Conditions | Exploitation requires network reachability to a pupnp (libupnp) UPnP service that accepts and parses SOAP requests, with the attacker positioned on the same local/adjacent network segment (AV:A) - no authentication or user interaction is needed against default configurations. The specific trigger is supplying XML nested deeply enough to drive the recursive ixml traversal functions (ixmlPrintDomTreeRecursive in ixml/src/ixml.c; ixmlNode_getElementsByTagNameRecursive, ixmlNode_getElementsByTagNameNSRecursive, ixmlNode_cloneNodeTreeRecursive, ixmlNode_isAncestor in ixml/src/node.c) into stack exhaustion. Limiting factors: the attacker must be on the local/adjacent network (not internet-routable by default), the impact is confined to crashing a service thread (availability only, no code execution or data exposure), and hosts running pupnp 2.0.0 or later are not affected. |
| Impact | This is a moderate-severity denial-of-service issue (CVSS 6.5, CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) whose only impact is availability - a crashed UPnP service thread - with no confidentiality or integrity consequence (C:N/I:N). The CVSS signals are internally consistent and align with the description: AV:A matches the stated 'unauthenticated peer on the local network', PR:N matches 'unauthenticated', and A:H matches 'crash the UPnP service'. No EPSS score, KEV listing, or public exploit was provided in the input, so there is no evidence of active exploitation or widespread weaponization; this is a low-urgency issue by exploitation signals. The one aggravating factor is that it is an incomplete-fix case for CVE-2021-28302 (the 2021 remediation converted ixmlNode_free but left ixmlPrintDomTreeRecursive, ixmlNode_getElementsByTagNameRecursive/NSRecursive, ixmlNode_cloneNodeTreeRecursive, and ixmlNode_isAncestor recursive), meaning the root CWE-674 class was known and previously under-remediated. The key limiter is the adjacent-network attack vector (AV:A): exploitation requires local/same-segment access, not internet reachability, so this is a priority primarily for environments where untrusted devices share the LAN (consumer, IoT, guest networks) rather than internet-facing exposure. Overall: a real but bounded issue - patch it, but it is not a high-CVSS, high-real-risk emergency. |
| Exploit ScenarioDerived | An unauthenticated attacker on the same local network sends a crafted SOAP request containing XML nested thousands of levels deep to a device running a pupnp-based UPnP service. When the service parses and traverses the DOM (e.g., via ixmlPrintDomTreeRecursive or the getElementsByTagName traversal paths), the unbounded recursion over firstChild/nextSibling links exhausts the service thread's stack and crashes it. No public exploit code was identified in the input, though the fix commit publicly documents the vulnerable traversal paths. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 16, 2026
Stack exhaustion in pupnp (libupnp) before 2.0.0 allows an unauthenticated attacker on the local or adjacent network to crash a UPnP service thread by delivering a SOAP request whose XML body is nested deeply enough to exhaust the stack inside the library's recursive ixml DOM traversal functions. The issue is rated CVSS 6.5 (CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) and affects availability only, with no confidentiality or integrity impact; hosts running 2.0.0 or later are not affected. This is an incomplete-fix case for CVE-2021-28302, and no public exploit code was identified at time of analysis.
RemediationAI
Vendor-released patch: upgrade pupnp (libupnp) to 2.0.0, which is published at https://github.com/pupnp/pupnp/releases/tag/release-2.0.0 and contains the iterative traversal rewrite in commit 82ccaec7ab6b1258ea1ac66374d8940712ccd4c4; recompile or relink any application or firmware embedding libupnp against 2.0.0 or later, since patching the library alone does not help statically linked deployments. Where upgrading is not immediately possible, apply compensating controls that reduce the attack surface, understanding their trade-offs: restrict the UPnP/SSDP and SOAP HTTP listeners to trusted segments with host or network firewalling (UPnP discovery and control stop working for clients outside the allowed range); disable the UPnP service entirely on devices that do not require it (removes the feature but also the exposure); and, because the crash is a thread-level failure rather than process exit, run the UPnP daemon under a supervisor configured to restart on failure (for example systemd Restart=on-failure), accepting a brief availability gap and the risk that repeated crashes mask a broader fault. Deploying a front-end proxy or filter that rejects excessively nested XML would mitigate the trigger, but requires the attacker's request path to traverse that component and adds latency and configuration complexity. Review the advisory at https://github.com/pupnp/pupnp/security/advisories/GHSA-25cx-xv8x-j247 for any vendor-published interim guidance.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
pupnp (libupnp) is the reference SDK for building UPnP device and control-point applications, and it embeds ixml, a DOM-style XML parser. CWE-674 (uncontrolled recursion) is the root cause here: the iterative parser accepts deeply nested documents, but multiple traversal routines walk firstChild and nextSibling links using native recursion, so document depth maps directly onto C call-stack depth. The affected functions are ixmlPrintDomTreeRecursive in ixml/src/ixml.c and ixmlNode_getElementsByTagNameRecursive, ixmlNode_getElementsByTagNameNSRecursive, ixmlNode_cloneNodeTreeRecursive and ixmlNode_isAncestor in ixml/src/node.c. CVE-2021-28302 previously exposed the same class of bug and was remediated only for ixmlNode_free, leaving these traversal paths recursive; the fix commit (82ccaec7ab6b1258ea1ac66374d8940712ccd4c4) rewrites the DOM printing routine into an iterative loop that tracks a parent fence node and an ascending/descending state, and processes attribute chains with a simple iterative walk, eliminating the unbounded recursion. The CPE cpe:2.3:a:pupnp:pupnp:*:*:*:*:*:*:*:* covers all releases prior to the 2.0.0 tag. Because the trigger is reached through a SOAP request parsed by the UPnP stack, the attack surface is the library's XML handling path rather than a specific product-specific endpoint, which is why device and control-point applications built on libupnp inherit the exposure.
Know when Pupnp 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
AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Unauthenticated adjacent-network peer (AV:A/PR:N/UI:N) reliably triggers stack-exhaustion recursion via SOAP XML (AC:L); impact is service crash only, so C:N/I:N/A:H.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
pupnp is an SDK for development of UPnP device and control point applications. Prior to 2.0.0, multiple ixml DOM traversal functions process deeply nested XML with unbounded recursion. The iterative XML parser accepts the document, but ixmlPrintDomTreeRecursive in ixml/src/ixml.c and ixmlNode_getElementsByTagNameRecursive, ixmlNode_getElementsByTagNameNSRecursive, ixmlNode_cloneNodeTreeRecursive, and ixmlNode_isAncestor in ixml/src/node.c recurse over firstChild and nextSibling links. An unauthenticated peer on the local network can supply deeply nested XML through a SOAP request, exhaust a service thread's stack, and crash the UPnP service. This is an incomplete-fix case for CVE-2021-28302 because its remediation converted ixmlNode_free but left these traversal paths recursive. This issue is fixed in 2.0.0.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
A stack overflow in pupnp before version 1.14.5 can cause the denial of service through the Parser_parseDocument() funct
The Portable SDK for UPnP Devices is an SDK for development of UPnP device and control point applications. Rated critica
Denial of service in pupnp (libupnp) releases prior to 22.0.4 lets remote unauthenticated attackers stall the UPnP minis
Denial of service in pupnp (the portable UPnP SDK) versions prior to 2.0.2 allows unauthenticated remote attackers to ex
Denial of service in pupnp (portable UPnP SDK) versions prior to 2.0.2 affects remote, unauthenticated deployments whose
Integer overflow in pupnp's HTTP Content-Length parser (raw_to_int in upnp/src/genlib/net/http/httpparser.c) allows a re
Port confusion in pupnp's URI parser allows remote unauthenticated attackers to bypass port-based access controls by sup
EUVD-2026-102927
NVD
CVE.org
Vulnrichment
GitHub
Exploit-DB