Source: pupnp
X-Debbugs-CC: [email protected]
Severity: important
Tags: security

Hi,

The following vulnerabilities were published for pupnp.

CVE-2026-77630[0]:
| 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.

https://github.com/pupnp/pupnp/security/advisories/GHSA-46ph-jff5-5h77
https://github.com/pupnp/pupnp/commit/5dba8070b4d64d976f8e6fc13f1f301befebe7d2 
(release-22.0.4)

CVE-2026-57488[1]:
| pupnp is an SDK for development of UPnP device and control point
| applications. Prior to 2.0.2, raw_to_int in
| upnp/src/genlib/net/http/httpparser.c parses Content-Length with
| strtol and casts the resulting long to a 32-bit int before the
| caller stores it as unsigned int. On LP64 systems, values greater
| than INT_MAX can truncate or wrap, so the HTTP parser can accept a
| body length different from the declared value. A remote adjacent-
| network peer can use the resulting parser disagreement to leave
| bytes to be interpreted as another request in persistent or proxied
| contexts, or can make a worker wait for an extremely large body and
| cause denial of service. This issue is fixed in 2.0.2.

https://github.com/pupnp/pupnp/security/advisories/GHSA-g6c2-x4r9-352g
https://github.com/pupnp/pupnp/commit/de9602aef34ff722f3630d66c9be8eaa0aa9f012 
(release-2.0.2)

CVE-2026-57487[2]:
| pupnp is an SDK for development of UPnP device and control point
| applications. Prior to 2.0.2, Transfer-Encoding: chunked causes the
| HTTP parser in upnp/src/genlib/net/http/httpparser.c to leave
| parser->content_length at zero while parser_parse_chunky_entity and
| parser_parse_chunky_body accumulate decoded bytes in
| parser->msg.entity. The g_maxContentLength checks in
| http_RecvMessage in upnp/src/genlib/net/http/httpreadwrite.c
| therefore reject oversized numeric Content-Length bodies but do not
| enforce the same limit on decoded chunked bodies. A remote peer that
| can reach a SOAP, GENA, miniserver, or control-point HTTP response
| path can make the process buffer an entity larger than the
| configured maximum, causing resource exhaustion and denial of
| service. This issue is fixed in 2.0.2.

https://github.com/pupnp/pupnp/security/advisories/GHSA-gcj7-j9f7-q84c
https://github.com/pupnp/pupnp/commit/9ff9bc583ad8ee4ba022634434a7b71db9bd96e1 
(release-2.0.2)

CVE-2026-57486[3]:
| pupnp is an SDK for development of UPnP device and control point
| applications. Prior to 2.0.2, ixmlNode_compare in ixml/src/node.c
| passes the nullable nodeValue, namespaceURI, prefix, and localName
| fields directly to strcmp. Non-namespaced attributes created by
| ixmlDocument_createAttribute legitimately leave those fields NULL.
| When ixmlElement_removeAttributeNode compares two distinct attribute
| objects with the same nodeName through find_condition_node, the
| pointer-identity shortcut does not apply and the comparison
| dereferences NULL, causing a process crash when application handling
| of attacker-controlled XML reaches this path. This issue is fixed in
| 2.0.2.

https://github.com/pupnp/pupnp/security/advisories/GHSA-q54q-vx78-v9rq
https://github.com/pupnp/pupnp/commit/4b2f775e3b98de3cfb096707bcde040c5562d9ec 
(release-2.0.2)

CVE-2026-55862[4]:
| 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.

https://github.com/pupnp/pupnp/security/advisories/GHSA-25cx-xv8x-j247
https://github.com/pupnp/pupnp/commit/82ccaec7ab6b1258ea1ac66374d8940712ccd4c4 
(release-2.0.0)

If you fix the vulnerabilities please also make sure to include the
CVE (Common Vulnerabilities & Exposures) ids in your changelog entry.

For further information see:

[0] https://security-tracker.debian.org/tracker/CVE-2026-77630
    https://www.cve.org/CVERecord?id=CVE-2026-77630
[1] https://security-tracker.debian.org/tracker/CVE-2026-57488
    https://www.cve.org/CVERecord?id=CVE-2026-57488
[2] https://security-tracker.debian.org/tracker/CVE-2026-57487
    https://www.cve.org/CVERecord?id=CVE-2026-57487
[3] https://security-tracker.debian.org/tracker/CVE-2026-57486
    https://www.cve.org/CVERecord?id=CVE-2026-57486
[4] https://security-tracker.debian.org/tracker/CVE-2026-55862
    https://www.cve.org/CVERecord?id=CVE-2026-55862

Please adjust the affected versions in the BTS as needed.

Reply via email to