Description
URI versions before 5.36 for Perl encode non-NFC host names to non-standard punycode labels via missing normalization in nameprep.

nameprep lowercases each host label but performs no Unicode normalization. IDNA requires a label to be normalized to Form C before it is encoded (RFC 5891), so a label that is not already in NFC is encoded to a different A-label than its normalized form. A label built from the precomposed Devanagari sequence U+0958 U+093E encodes to xn--72b5c without normalization but to xn--11b2fg after NFC normalization, and xn--72b5c does not round-trip back to the original label.

Any caller that reads host() from a URI built from untrusted input and uses it for a security decision (an allow or deny list, an SSRF filter, deduplication, a cache key) sees the non-standard label, while a client that fetches the same URL resolves the NFC form, so the check and the fetch can disagree about the host.
Published: 2026-08-31
Score: n/a
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The URI module for Perl implements nameprep by lowercasing host labels but does not perform Unicode normalization. Because IDNA requires labels to be normalized to Form C before punycode encoding, an unnormalized label is encoded to a different A‑label than its NFC form, breaking round‑trip resolution. This mismatch means that a server reading the host component from a parsed URI may see a non‑standard label, while a user’s browser or DNS resolver will resolve the canonical NFC form, allowing an attacker to craft a URL that passes host‑based security checks (such as allow lists or SSRF filters) while the final connection uses a different hostname. The consequence is potential bypass of access controls, incorrect caching, and unpredictable network behavior.

Affected Systems

The affected component is the URI Perl module provided by libwww-perl. All versions earlier than 5.36 are impacted. This includes releases distributed via CPAN and embedded in Perl applications that rely on this library for URI parsing.

Risk and Exploitability

The CVSS score is not disclosed, and the EPSS value is unavailable, but the vulnerability can be exploited by supplying crafted non‑NFC hostnames in any URI that is parsed by the vulnerable library. Because the mis‑encoding occurs prior to network communication, an attacker can manipulate host‑based decisions such as allow lists, redirection policies, or cache lookups. No active exploit is reported in KEV, but the potential impact on confidentiality, integrity, or availability warrants attention.

Generated by OpenCVE AI on August 31, 2026 at 18:20 UTC.

Remediation

Vendor Solution

Upgrade to URI 5.36 or later.


OpenCVE Recommended Actions

  • Apply the vendor’s patch by upgrading to URI 5.36 or newer.
  • If upgrading is not possible, do not use the host() value directly from a URI created from untrusted input; instead perform explicit Unicode NFC normalization and RFC 5891 punycode encoding on the hostname yourself or use a separate, compliant library.
  • Review any external configuration that relies on hostnames derived from URI objects (such as whitelists, deny‑lists, SSRF protection, cache keys) and re‑validate after normalizing the host component.

Generated by OpenCVE AI on August 31, 2026 at 18:20 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 31 Aug 2026 17:45:00 +0000

Type Values Removed Values Added
Description URI versions before 5.36 for Perl encode non-NFC host names to non-standard punycode labels via missing normalization in nameprep. nameprep lowercases each host label but performs no Unicode normalization. IDNA requires a label to be normalized to Form C before it is encoded (RFC 5891), so a label that is not already in NFC is encoded to a different A-label than its normalized form. A label built from the precomposed Devanagari sequence U+0958 U+093E encodes to xn--72b5c without normalization but to xn--11b2fg after NFC normalization, and xn--72b5c does not round-trip back to the original label. Any caller that reads host() from a URI built from untrusted input and uses it for a security decision (an allow or deny list, an SSRF filter, deduplication, a cache key) sees the non-standard label, while a client that fetches the same URL resolves the NFC form, so the check and the fetch can disagree about the host.
Title URI versions before 5.36 for Perl encode non-NFC host names to non-standard punycode labels via missing normalization in nameprep
Weaknesses CWE-1289
References

Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: CPANSec

Published:

Updated: 2026-08-31T17:29:42.929Z

Reserved: 2026-08-15T21:13:08.480Z

Link: CVE-2026-19953

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-31T18:17:14.320

Modified: 2026-08-31T18:17:14.320

Link: CVE-2026-19953

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-31T18:30:03Z

Weaknesses
  • CWE-1289

    Improper Validation of Unsafe Equivalence in Input