[From nobody Sun Aug 30 21:35:06 2026
Received: (at submit) by bugs.debian.org; 27 Aug 2026 13:55:56 +0000
X-Spam-Checker-Version: SpamAssassin 4.0.1-bugs.debian.org_2005_01_02
 (2024-03-25) on buxtehude.debian.org
X-Spam-Level: 
X-Spam-Status: No, score=-9.9 required=4.0 tests=BAYES_00, FOURLA,
 FROMDEVELOPER, 
 NO_RELAYS,XMAILER_REPORTBUG autolearn=ham autolearn_force=no
 version=4.0.1-bugs.debian.org_2005_01_02
X-Spam-Bayes: score:0.0000 Tokens: new, 39; hammy, 150; neutral, 256; spammy,
 0. spammytokens: hammytokens:0.000-+--XDebbugsCc,
 0.000-+--X-Debbugs-Cc, 0.000-+--H*F:U*carnil, 0.000-+--H*Ad:N*Bug,
 0.000-+--HTo:N*Debian
Return-path: &lt;carnil@debian.org&gt;
Received: via submission by buxtehude.debian.org with esmtp (Exim 4.96)
 (envelope-from &lt;carnil@debian.org&gt;) id 1wzaaC-00BwQP-1r
 for submit@bugs.debian.org; Thu, 27 Aug 2026 13:55:56 +0000
Content-Type: text/plain; charset=&quot;us-ascii&quot;
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
From: Salvatore Bonaccorso &lt;carnil@debian.org&gt;
To: Debian Bug Tracking System &lt;submit@bugs.debian.org&gt;
Subject: node-ajv: CVE-2026-75899 CVE-2026-75931 CVE-2026-75975 CVE-2026-76172
Message-ID: &lt;178783895468.326685.7738187584821169278.reportbug@eldamar.lan&gt;
X-Mailer: reportbug 13.2.0+nmu1
Date: Thu, 27 Aug 2026 15:55:54 +0200
Delivered-To: submit@bugs.debian.org

Source: node-ajv
Version: 8.20.0~ds+~cs7.1.3-3
Severity: important
Tags: security upstream
X-Debbugs-Cc: carnil@debian.org, Debian Security Team &lt;team@security.debian.org&gt;

Hi,

The following vulnerabilities were published for node-ajv.

Unfortunately there was another &quot;batch&quot;. They are related to the
embedded and provided fast-uri, could you please check them
individually?

CVE-2026-75899[0]:
| fast-uri is a URI parser for Node.js. It decodes percent escapes in
| a hostname during parsing and then decodes the parsed hostname a
| second time during authority recomposition, so a single call to
| normalize or resolve can turn nested percent-encoded input into a
| different network destination such as a loopback hostname or
| address. For example, a doubly encoded host that spells out a
| loopback name decodes to that live host in one operation, which
| contradicts RFC 3986 section 2.4 that an implementation must not
| decode the same string more than once. An application that
| normalizes or resolves an untrusted HTTP-family URI before outbound
| routing, redirect validation, or a host-policy check can receive a
| destination different from the one the original encoded host
| represented, giving a server-side request forgery and host-policy
| bypass primitive. This is an incomplete-fix variant of
| CVE-2026-6322. The affected versions are 2.4.1 up to but not
| including 2.4.5, 3.1.2 up to but not including 3.1.6, and 4.0.0 up
| to but not including 4.1.3. The issue is fixed in 2.4.5, 3.1.6, and
| 4.1.3, which normalize percent escapes once and preserve encoded
| percent signs. Users should upgrade to a patched version.


CVE-2026-75931[1]:
| fast-uri is a URI parser for Node.js. It canonicalizes a host to its
| ASCII form only when the input carries an explicit scheme, so a
| scheme-relative reference such as a host preceded by two slashes is
| returned with its host verbatim and no error set. As a result fast-
| uri's own entry points disagree with each other: parse, resolve,
| normalize, and equal can yield different hosts for the same input
| depending only on whether a scheme is written out, and equal can
| return opposite verdicts for the same pair of hosts. An application
| that extracts a host with fast-uri to check it against a policy list
| and then resolves the same reference can make its decision on one
| host while the destination is another, enabling host confusion and
| policy bypass. The affected versions are 2.4.2 up to but not
| including 2.4.5, 3.1.3 up to but not including 3.1.6, and 4.0.1 up
| to but not including 4.1.3. The issue is fixed in 2.4.5, 3.1.6, and
| 4.1.3, which canonicalize the host consistently across the resolve
| path. Users should upgrade to a patched version.


CVE-2026-75975[2]:
| fast-uri is a URI parser for Node.js. Its custom parser for
| bracketed IPv6 literals does not validate the complete IPv6 grammar,
| so invalid trailing text in an authority can be silently discarded
| and a malformed attacker-controlled host is turned into a different
| valid IPv6 destination. For example, a bracketed literal with
| invalid trailing characters is normalized to the unspecified
| address, which a Node HTTP client then connects to a local service
| over loopback, and other malformed literals collapse to private-
| range addresses. No error is set on the parsed result, so an
| application checking the error field cannot detect the rewrite. An
| application that normalizes untrusted URLs before outbound requests,
| redirects, proxy routing, or address-policy enforcement can be
| redirected to a local or private IPv6 target, giving a server-side
| request forgery and address-policy bypass primitive. The affected
| versions are 2.3.1 up to but not including 2.4.5, 3.0.0 up to but
| not including 3.1.6, and 4.0.0 up to but not including 4.1.3. The
| issue is fixed in 2.4.5, 3.1.6, and 4.1.3, which validate bracketed
| IP literals against the full grammar and mark malformed literals as
| authority errors. Users should upgrade to a patched version.


CVE-2026-76172[3]:
| fast-uri is a URI parser for Node.js. During parsing it runs a
| legacy decoding pass over the scheme component and never re-escapes
| the result, and serialization writes the scheme back out verbatim,
| unlike the host component which is re-escaped. As a result an input
| whose scheme carries percent-encoded slashes parses as a scheme with
| no authority, so the parsed host and error are both undefined, yet
| resolving or normalizing that same input emits a network-path
| reference whose authority is attacker-chosen and re-parses to that
| host. An application that allowlists on the parsed host, or treats a
| reference with no authority as safe to resolve against its base,
| gets the opposite of what it checked, giving an off-site redirect,
| server-side request forgery, or address-policy bypass. The legacy
| decoder also expands non-standard escape forms, widening the issue
| past upstream filters, and control characters in the scheme can
| reach the output as raw carriage return and line feed. The affected
| versions are 2.3.1 up to but not including 2.4.5, 3.0.0 up to but
| not including 3.1.6, and 4.0.0 up to but not including 4.1.3. The
| issue is fixed in 2.4.5, 3.1.6, and 4.1.3, which reject a scheme
| that is not valid after decoding. Users should upgrade to a patched
| version.


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

For further information see:

[0] https://security-tracker.debian.org/tracker/CVE-2026-75899
    https://www.cve.org/CVERecord?id=CVE-2026-75899
[1] https://security-tracker.debian.org/tracker/CVE-2026-75931
    https://www.cve.org/CVERecord?id=CVE-2026-75931
[2] https://security-tracker.debian.org/tracker/CVE-2026-75975
    https://www.cve.org/CVERecord?id=CVE-2026-75975
[3] https://security-tracker.debian.org/tracker/CVE-2026-76172
    https://www.cve.org/CVERecord?id=CVE-2026-76172

Regards,
Salvatore
]