Skip to main content

pupnp (libupnp) EUVDEUVD-2026-102933

| CVE-2026-77630 HIGH
Uncontrolled Resource Consumption (CWE-400)
2026-10-16 GitHub_M
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 UPnP miniserver on network
  2. Delivery
    Send HTTP/GENA requests with slow hostnames
  3. Exploit
    parse_hostport blocks on synchronous getaddrinfo
  4. Execution
    Pin bounded worker threads for resolver timeout
  5. Impact
    Exhaust 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

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

Alert me

AnalysisAIv1 – 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

pupnp < 22.0.4

Affected Packages

euvd pupnp fix: 22.0.4

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

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 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).

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 16, 2026 - 17:17 EUVD
CVE Published
Oct 16, 2026 - 15:36 cve.org
HIGH 7.5

DescriptionCVE.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

Why It Matters

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.

Business Impact: Medium
Compensating Controls

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

Prevalence
High
pupnp/libupnp is a very common UPnP SDK embedded in routers, IoT and media devices
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org Vulnrichment 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 HIGH
CISA KEV No
Public POC No
EPSS N/A
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
Medium
Technical Impact
Partial

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
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.

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