Skip to content
Heist/ feed
Back to feed
High

fast-uri vulnerable to host confusion via failed IDN canonicalization

Type: advisorySources: OSV

fast-uri versions 2.3.1 through 3.1.2 and 4.0.0 fail to canonicalize Unicode (IDN) hostnames for HTTP-family URLs. The IDN conversion path calls a helper that does not exist on the global URL constructor, silently leaving the host in its original Unicode form while normalize() and equal() still return values that differ from a WHATWG-compatible URL parser. Applications that use fast-uri to enforce host-based policy (denylists, loopback filtering, redirect validation, outbound proxy routing) before passing the same URL to Node's URL or fetch can be bypassed when the two implementations resolve the same input to different hosts. Patches: upgrade to fast-uri 3.1.3 for the 3.x line or 4.0.1 for the 4.x line. Workarounds: enforce host policy using the same URL parser used for the actual request, or reject non-ASCII hosts before policy checks.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-13676
Confirmed fixed CVEs
Not specified
Updated in this feed
5 Nov 2026, 11:26 UTC · Revision 1

Source evidence

fast-uri vulnerable to host confusion via failed IDN canonicalization

core-osv · Original source

Published 29 Jun 2026, 13:22 UTC

fast-uri versions 2.3.1 through 3.1.2 and 4.0.0 fail to canonicalize Unicode (IDN) hostnames for HTTP-family URLs. The IDN conversion path calls a helper that does not exist on the global URL constructor, silently leaving the host in its original Unicode form while normalize() and equal() still return values that differ from a WHATWG-compatible URL parser. Applications that use fast-uri to enforce host-based policy (denylists, loopback filtering, redirect validation, outbound proxy routing) before passing the same URL to Node's URL or fetch can be bypassed when the two implementations resolve the same input to different hosts. Patches: upgrade to fast-uri 3.1.3 for the 3.x line or 4.0.1 for the 4.x line. Workarounds: enforce host policy using the same URL parser used for the actual request, or reject non-ASCII hosts before policy checks.

osv:CVE-2026-13676
Complete source record
{
  "id": "984b9b62e7edcabf157ff870325803539a6556046f4f46e174ee0576f948a35f",
  "url": "https://osv.dev/vulnerability/CVE-2026-13676",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "fast-uri vulnerable to host confusion via failed IDN canonicalization",
    "summary": "fast-uri versions 2.3.1 through 3.1.2 and 4.0.0 fail to canonicalize Unicode (IDN) hostnames for HTTP-family URLs. The IDN conversion path calls a helper that does not exist on the global URL constructor, silently leaving the host in its original Unicode form while normalize() and equal() still return values that differ from a WHATWG-compatible URL parser. Applications that use fast-uri to enforce host-based policy (denylists, loopback filtering, redirect validation, outbound proxy routing) before passing the same URL to Node's URL or fetch can be bypassed when the two implementations resolve the same input to different hosts. Patches: upgrade to fast-uri 3.1.3 for the 3.x line or 4.0.1 for the 4.x line. Workarounds: enforce host policy using the same URL parser used for the actual request, or reject non-ASCII hosts before policy checks.",
    "evidence": "osv:CVE-2026-13676",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-13676",
      "aliases": [
        "CVE-2026-13676",
        "GHSA-4c8g-83qw-93j6"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/fastify/fast-uri",
              "type": "GIT",
              "events": [
                {
                  "introduced": "7ffca1e67b7d6d34cfbc3f91a1adc9a8c07728d5"
                },
                {
                  "fixed": "0549fe35b0d482233f3be2816439f3ec803603fa"
                },
                {
                  "introduced": "2a5232ef01d62a2044dbd643f7c32f02e30b4fb0"
                },
                {
                  "fixed": "d2bf5215239d44284c81e4013bb744c1be94ac2f"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:openjsf:fast-uri:*:*:*:*:*:node.js:*:*",
                    "range": [
                      {
                        "introduced": "2.3.1"
                      },
                      {
                        "fixed": "3.1.3"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "cpe": "cpe:2.3:a:openjsf:fast-uri:*:*:*:*:*:node.js:*:*",
                    "range": [
                      {
                        "introduced": "4.0.0"
                      },
                      {
                        "fixed": "4.0.1"
                      }
                    ],
                    "source": "CPE_RANGE"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v3.1.2",
            "v4.0.0",
            "v3.1.1",
            "v3.1.0",
            "v3.0.6",
            "v3.0.5",
            "v3.0.4",
            "v3.0.3",
            "v3.0.2",
            "v3.0.1",
            "v3.0.0",
            "v2.4.0",
            "v2.3.1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-13676.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:44.130349837Z",
      "provider": "osv",
      "references": [
        "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-13676.json",
        "https://access.redhat.com/errata/RHSA-2026:37186",
        "https://access.redhat.com/errata/RHSA-2026:37585",
        "https://access.redhat.com/errata/RHSA-2026:37628",
        "https://access.redhat.com/errata/RHSA-2026:40118",
        "https://access.redhat.com/errata/RHSA-2026:40262",
        "https://access.redhat.com/errata/RHSA-2026:40765",
        "https://access.redhat.com/errata/RHSA-2026:40945",
        "https://access.redhat.com/errata/RHSA-2026:41066",
        "https://access.redhat.com/errata/RHSA-2026:41928",
        "https://access.redhat.com/errata/RHSA-2026:41929",
        "https://access.redhat.com/errata/RHSA-2026:42815",
        "https://access.redhat.com/errata/RHSA-2026:43038",
        "https://access.redhat.com/errata/RHSA-2026:44239",
        "https://access.redhat.com/errata/RHSA-2026:44268",
        "https://access.redhat.com/errata/RHSA-2026:47728",
        "https://access.redhat.com/errata/RHSA-2026:48124",
        "https://access.redhat.com/errata/RHSA-2026:48126",
        "https://access.redhat.com/errata/RHSA-2026:49642",
        "https://access.redhat.com/errata/RHSA-2026:50340",
        "https://access.redhat.com/errata/RHSA-2026:50479",
        "https://access.redhat.com/errata/RHSA-2026:50758",
        "https://access.redhat.com/errata/RHSA-2026:51196",
        "https://access.redhat.com/errata/RHSA-2026:51197",
        "https://access.redhat.com/errata/RHSA-2026:51342",
        "https://access.redhat.com/errata/RHSA-2026:51348",
        "https://access.redhat.com/errata/RHSA-2026:51349",
        "https://access.redhat.com/errata/RHSA-2026:54760",
        "https://access.redhat.com/errata/RHSA-2026:56366",
        "https://access.redhat.com/errata/RHSA-2026:56431",
        "https://access.redhat.com/errata/RHSA-2026:57013",
        "https://access.redhat.com/errata/RHSA-2026:57191",
        "https://access.redhat.com/errata/RHSA-2026:57194",
        "https://access.redhat.com/errata/RHSA-2026:57590",
        "https://access.redhat.com/errata/RHSA-2026:59593",
        "https://access.redhat.com/errata/RHSA-2026:60386",
        "https://access.redhat.com/errata/RHSA-2026:60520",
        "https://access.redhat.com/errata/RHSA-2026:61314",
        "https://access.redhat.com/errata/RHSA-2026:63371",
        "https://access.redhat.com/errata/RHSA-2026:66488",
        "https://access.redhat.com/errata/RHSA-2026:66545",
        "https://access.redhat.com/security/cve/CVE-2026-13676",
        "https://cna.openjsf.org/security-advisories.html",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/13xxx/CVE-2026-13676.json",
        "https://github.com/fastify/fast-uri/security/advisories/GHSA-4c8g-83qw-93j6",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-13676",
        "https://bugzilla.redhat.com/show_bug.cgi?id=2494197"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-436"
        ],
        "cna_assigner": "openjs",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/13xxx/CVE-2026-13676.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-13676",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 511728,
  "published_at": "2026-06-29T13:22:44.674+00:00"
}