Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach UPnP miniserver on network
-
DeliverySend HTTP/GENA requests with slow hostnames
-
Exploitparse_hostport blocks on synchronous getaddrinfo
-
ExecutionPin bounded worker threads for resolver timeout
-
ImpactExhaust thread pool, deny UPnP service
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 run the pupnp (libupnp) miniserver with network reachability to its HTTP/GENA listener, and that the attacker can reach the inbound HTTP request path or send GENA SUBSCRIBE requests carrying a CALLBACK header - both parsed by parse_uri/parse_hostport, which synchronously resolves the attacker-supplied hostname via getaddrinfo. No authentication or user interaction is needed (PR:N/UI:N), and default configurations are affected because the resolver call occurs during normal request parsing. The decisive attacker-controlled condition is supplying a hostname (not a literal IP) that resolves slowly or not at all, maximizing time each worker is blocked. The primary LIMITING factor is reachability: UPnP miniservers are usually bound to the local network, so practical exploitation presumes LAN access (or a device misconfigured to expose UPnP to the internet); impact is also self-limiting and recoverable once requests stop and threads free. |
| Impact | This is a genuine but bounded availability issue, not a top-tier emergency. The provided CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H = 7.5 HIGH) is internally consistent with the description: a remote, unauthenticated peer sends inbound HTTP request targets or GENA SUBSCRIBE CALLBACK headers containing attacker-chosen hostnames, and pupnp's parse_hostport synchronously calls getaddrinfo, blocking a bounded miniserver worker for the full resolver timeout; a handful of such requests exhaust the thread pool and deny UPnP service. Impact is purely availability (C:N/I:N) - there is no code execution or data exposure, so despite the HIGH rating this is a classic CWE-400 resource-exhaustion DoS rather than a critical breach vector. No EPSS score was supplied, and the issue is NOT in CISA KEV, so there is no evidence of active exploitation. The oss-fuzz issue reference (issues.oss-fuzz.com/531780528) indicates the defect was found by fuzzing and that a reproducer likely exists internally, but that is a triage artifact, not a published weaponized exploit, so exploitation status is best read as 'no public exploit identified at time of analysis.' A key real-world mitigant the raw score does not capture: UPnP miniservers are typically bound to the LAN, so AV:N holds only where the attacker already has local-network reachability (or the device is misconfigured to expose UPnP to the internet). Net: real and worth patching for anyone embedding libupnp, but a predictable, recoverable DoS on a LAN-facing service, not a widespread remote-compromise priority. |
| Exploit ScenarioDerived | An attacker with network reachability to a device running the pupnp miniserver sends a small number of crafted HTTP requests (or GENA SUBSCRIBE requests) whose request-target or CALLBACK header names a deliberately slow or non-responsive hostname. Each request pins a miniserver worker thread inside a synchronous getaddrinfo call for the resolver timeout, and because the thread pool is bounded, only a few concurrent requests are needed to tie up all workers and make the UPnP service unresponsive. No public exploit is identified, though the flaw was surfaced via oss-fuzz fuzzing. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 16, 2026
Denial of service in pupnp (libupnp) releases prior to 22.0.4 lets remote unauthenticated attackers stall the UPnP miniserver by feeding it hostnames that resolve slowly or not at all: parse_hostport() in uri.c synchronously calls getaddrinfo() while parsing inbound HTTP request targets and GENA SUBSCRIBE CALLBACK headers, so each request pins a worker thread for the resolver timeout. Because the CVSS vector is AV:N/AC:L/PR:N/UI:N with only availability impact (C:N/I:N/A:H, 7.5), a small number of crafted requests can exhaust the bounded miniserver worker pool and deny UPnP service to legitimate devices; no public exploit code was identified at the time of analysis, though the upstream fix commit and advisory are public. Realistically the issue is bounded and self-recovering - once the hostile requests stop, threads free up - and exploitation in practice presumes LAN reachability, since miniservers are normally bound to the local network.
RemediationAI
Upgrade to pupnp (libupnp) 22.0.4 - vendor-released patch - available from https://github.com/pupnp/pupnp/releases/tag/release-22.0.4, per advisory GHSA-46ph-jff5-5h77 (https://github.com/pupnp/pupnp/security/advisories/GHSA-46ph-jff5-5h77); the fix is commit 5dba8070b4d64d976f8e6fc13f1f301befebe7d2, which moves DNS resolution out of parse_hostport() into a new resolve_hostport() invoked only by callers about to connect, propagates UPNP_E_INVALID_URL from http_FixUrl() on resolution failure, and makes create_url_list()/copy_URL_list() discard URL entries whose IPaddress.ss_family remains AF_UNSPEC. If upgrading is not immediately possible, the most effective compensating control is network scoping: block the miniserver's HTTP/GENA TCP ports (commonly 49152-49156 and the SSDP 1900/UDP advertisement path) at the LAN-to-WAN boundary and confirm UPnP is not exposed to the internet, since the assessed vector requires reachability to the listener and the primary practical limit is that miniservers are normally LAN-bound - the trade-off is that UPnP discovery and control then work only from the local segment. Layering a reverse proxy or front-end filter that rejects HTTP request targets and GENA CALLBACK values containing non-literal-IP hostnames is also effective at the cost of extra infrastructure and possible breakage of legitimate hostname-based callbacks. Do not rely on shortening resolver timeouts as a fix: it only reduces the blocking window and still allows worker starvation under sustained load. Note that no vendor-released patch is available for versions prior to 22.0.4 other than this release.
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
The root cause is CWE-400 (Uncontrolled Resource Consumption): blocking work is performed inside a parser that runs on attacker-controlled input. In pupnp, parse_uri() in upnp/src/genlib/net/http/httpparser.c processes the inbound HTTP request line, and create_url_list() in upnp/src/gena/gena_device.c processes GENA SUBSCRIBE CALLBACK headers; both route hostnames into parse_hostport() in upnp/src/genlib/net/uri/uri.c, which historically performed a synchronous getaddrinfo() (AF_UNSPEC, SOCK_STREAM) to convert any non-literal-IP host into a sockaddr. Because that resolution happened during request parsing rather than at connect time, an attacker-supplied hostname pointing at a slow or blackholed resolver holds a miniserver worker for the full resolver timeout. The upstream fix restructures this: parse_hostport() no longer resolves DNS and instead leaves IPaddress.ss_family == AF_UNSPEC for hostnames while storing the parsed port in a new hostport_type.port field; a new resolve_hostport() performs the getaddrinfo() only when a caller is actually about to connect; http_FixUrl() in httpreadwrite.c now fails closed with UPNP_E_INVALID_URL on resolution failure; and create_url_list()/copy_URL_list() reject entries whose ss_family is still AF_UNSPEC, preserving the port across copies. The affected package is identified by CPE cpe:2.3:a:pupnp:pupnp:*:*:*:*:*:*:*:*.
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:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Remote unauthenticated HTTP/GENA parsing triggers the resolver with no interaction (AV:N/AC:L/PR:N/UI:N); impact is availability-only thread-pool exhaustion (C:N/I:N/A:H), same host (S:U).
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 22.0.4, parse_hostport in upnp/src/genlib/net/uri/uri.c synchronously calls getaddrinfo while parse_uri is processing attacker-supplied hostnames from inbound HTTP request targets in upnp/src/genlib/net/http/httpparser.c and GENA SUBSCRIBE CALLBACK headers handled by create_url_list in upnp/src/gena/gena_device.c. A remote unauthenticated peer can choose a slow or nonresponsive hostname and block a bounded miniserver worker for the resolver timeout, allowing a small number of requests to exhaust the thread pool and deny UPnP service. This issue is fixed in 22.0.4.
Technical POC Analysis
CWE-400 (Uncontrolled Resource Consumption).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A denial-of-service vulnerability in the pupnp (libupnp) UPnP library - an embedded component in many network-connected devices such as media servers, NAS appliances, gateways, and building-automation gear - can be triggered by any unauthenticated host on the same local network to stall UPnP discovery and control on affected devices. The impact is availability only: there is no data exposure or code execution, and service recovers once hostile traffic stops, so risk is concentrated in environments that rely on UPnP for device interoperability. Leadership should care primarily about asset visibility, because exposure depends on which vendor products in the estate ship library versions older than 22.0.4 and on how quickly those vendors deliver updated firmware.
No vendor-packaged patch identified at time of analysis; interim mitigations include disabling UPnP/SSDP on devices that do not require it, restricting UPnP miniserver reachability to trusted local segments through firewall and VLAN rules, rate-limiting inbound UPnP request-target and GENA SUBSCRIBE CALLBACK traffic at the network boundary, and monitoring for miniserver worker-thread exhaustion. Upgrading to the upstream pupnp/libupnp 22.0.4 release resolves the issue once vendor firmware incorporating it is available.
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 (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
Stack exhaustion in pupnp (libupnp) before 2.0.0 allows an unauthenticated attacker on the local or adjacent network to
EUVD-2026-102933
NVD
CVE.org
Vulnrichment
GitHub
Exploit-DB