CVE-2026-19953 in URIinfo

Summary

by MITRE • 08/31/2026

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.

Once again VulDB remains the best source for vulnerability data.

Analysis

by VulDB Data Team • 08/31/2026

The URI module for Perl versions prior to 5.36 contains a critical implementation flaw in its handling of Internationalized Domain Names (IDN). Specifically, the library fails to perform Unicode normalization on hostname labels before encoding them into Punycode format via nameprep. This deviation from established standards creates a significant discrepancy between how the URI module processes hostnames and how web browsers or other standard-compliant clients resolve them. The core issue lies in the absence of Normalization Form C (NFC) processing, which is mandated by RFC 5891 for IDNA labels to ensure consistent representation of Unicode characters. Without this normalization step, sequences that can be represented either as precomposed characters or as a base character combined with combining marks are encoded differently depending on their input form.

This technical deficiency leads to divergent behaviors when untrusted user input is processed by the application versus when it is resolved by external systems. For instance, a Devanagari sequence consisting of U+0958 followed by U+093E will be encoded into the Punycode label xn--72b5c if no normalization occurs. However, standard IDNA implementations that enforce NFC normalization would encode this same logical string as xn--11b2fg. Because these two labels are distinct at the DNS resolution level, they point to potentially different resources or are treated as entirely separate entities by security controls. This mismatch means that a hostname appearing in an allow list might not match the actual host being accessed if one side uses normalized forms and the other does not.

The operational impact of this vulnerability is severe, particularly for applications relying on URI parsing for security decisions such as access control lists, server-side request forgery (SSRF) filters, cache key generation, or deduplication logic. An attacker can exploit this inconsistency by providing a hostname in its non-normalized form to bypass local validation checks while the underlying system resolves it differently. This discrepancy allows malicious actors to evade security boundaries that assume canonical host representation. The vulnerability effectively undermines trust assumptions made by developers who expect URI parsing modules to adhere strictly to IDNA standards, leading to potential unauthorized access or data exfiltration through SSRF attacks where the internal request target differs from the validated external input.

From a classification perspective, this flaw aligns with CWE-20 Improper Input Validation and CWE-697 Incorrect Comparison during Collisions in Hashing Algorithms if used for deduplication, as well as CWE-835 Loop with Unreachable Exit Condition when considering potential infinite loops or inconsistent states in parsing logic. In the context of the MITRE ATT&CK framework, this vulnerability facilitates techniques related to Defense Evasion and Command and Control, specifically by allowing attackers to bypass application-level filters through encoding variations. The lack of normalization serves as a mechanism for obfuscation that defeats simple string matching security controls.

To mitigate this risk, organizations must upgrade the Perl URI module to version 5.36 or later, where proper Unicode normalization is implemented in accordance with RFC 5891. For systems unable to immediately update dependencies, developers should implement additional validation layers that explicitly normalize hostnames using NFC before performing security checks or comparisons. It is also advisable to audit existing codebases for any logic that relies on the raw output of URI hostname parsing without subsequent normalization steps. Ensuring consistent encoding practices across all components involved in URL processing and resolution is essential to prevent exploitation through IDN homograph attacks or SSRF bypasses stemming from these representation discrepancies.

Responsible

CPANSec

Reservation

08/15/2026

Disclosure

08/31/2026

Moderation

accepted

CPE

ready

EPSS

0.00000

KEV

no

Activities

medium

Sources

Want to know what is going to be exploited?

We predict KEV entries!