node-ajv — security advisory
Impact: fast-uri versions from 2.3.1 through 4.1.0 (including the 3.x line up to 3.1.3 and the 2.x line up to 2.4.2) do not treat a literal backslash character (U+005C) as an authority delimiter. Node's native WHATWG URL parser, used by fetch, undici, and Node's http and https clients, normalizes the backslash to a forward slash for special schemes such as http, https, ws, wss, ftp, and file. As a result, the two parsers extract different hosts from the same input string. Applications that use fast-uri to enforce host-based policy such as allowlists, denylists, loopback or SSRF filtering, redirect validation, or outbound proxy routing before passing the same URL into Node's URL or fetch consumers can be steered to an unintended destination, including cloud metadata endpoints, loopback, or internal hosts. Patches: upgrade to fast-uri 4.1.1, 3.1.4, or 2.4.3. Workarounds: none.
- Products
- node-ajv
- Affected versions
- 5.0.0-1, 6.10.2-1, 6.12.6-2, 6.12.6-3, 8.12.0~ds+~2.1.1-4, 8.12.0~ds+~2.1.1-5, 8.17.1~ds+~3.0.1+~3.1.0-2, 8.17.1~ds+~3.0.1+~3.1.0-4build1, 8.20.0~ds+~cs6.1.3-1, 8.20.0~ds+~cs7.1.2-1, 8.20.0~ds+~cs7.1.3-1, 8.20.0~ds+~cs7.1.3-3
- Fixed versions
- Not specified
- CVEs
- CVE-2026-16221
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 02:55 UTC · Revision 1
Source evidence
Impact: fast-uri versions from 2.3.1 through 4.1.0 (including the 3.x line up to 3.1.3 and the 2.x line up to 2.4.2) do not treat a literal backslash character (U+005C) as an authority delimiter. Node's native WHATWG URL parser, used by fetch, undici, and Node's http and https clients, normalizes the backslash to a forward slash for special schemes such as http, https, ws, wss, ftp, and file. As a result, the two parsers extract different hosts from the same input string. Applications that use fast-uri to enforce host-based policy such as allowlists, denylists, loopback or SSRF filtering, redirect validation, or outbound proxy routing before passing the same URL into Node's URL or fetch consumers can be steered to an unintended destination, including cloud metadata endpoints, loopback, or internal hosts. Patches: upgrade to fast-uri 4.1.1, 3.1.4, or 2.4.3. Workarounds: none.
osv:UBUNTU-CVE-2026-16221
node-ajv
Fixed versions: Not specified
node-ajv
Fixed versions: Not specified
node-ajv
Fixed versions: Not specified
node-ajv
Fixed versions: Not specified
node-ajv
Fixed versions: Not specified
node-ajv
Fixed versions: Not specified
Complete source record
{
"id": "d048d3e47a8bf2f21a5c4182315b7ce30367f672b055fcc778bb088af5745e11",
"url": "https://osv.dev/vulnerability/UBUNTU-CVE-2026-16221",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "UBUNTU-CVE-2026-16221",
"summary": "Impact: fast-uri versions from 2.3.1 through 4.1.0 (including the 3.x line up to 3.1.3 and the 2.x line up to 2.4.2) do not treat a literal backslash character (U+005C) as an authority delimiter. Node's native WHATWG URL parser, used by fetch, undici, and Node's http and https clients, normalizes the backslash to a forward slash for special schemes such as http, https, ws, wss, ftp, and file. As a result, the two parsers extract different hosts from the same input string. Applications that use fast-uri to enforce host-based policy such as allowlists, denylists, loopback or SSRF filtering, redirect validation, or outbound proxy routing before passing the same URL into Node's URL or fetch consumers can be steered to an unintended destination, including cloud metadata endpoints, loopback, or internal hosts. Patches: upgrade to fast-uri 4.1.1, 3.1.4, or 2.4.3. Workarounds: none.",
"evidence": "osv:UBUNTU-CVE-2026-16221",
"products": [
{
"name": {
"value": "node-ajv",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "5.0.0-1",
"evidence": "/affected/0/versions"
}
]
},
{
"name": {
"value": "node-ajv",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "6.10.2-1",
"evidence": "/affected/1/versions"
}
]
},
{
"name": {
"value": "node-ajv",
"evidence": "/affected/2/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "6.12.6-2",
"evidence": "/affected/2/versions"
},
{
"value": "6.12.6-3",
"evidence": "/affected/2/versions"
}
]
},
{
"name": {
"value": "node-ajv",
"evidence": "/affected/3/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "6.12.6-3",
"evidence": "/affected/3/versions"
},
{
"value": "8.12.0~ds+~2.1.1-4",
"evidence": "/affected/3/versions"
}
]
},
{
"name": {
"value": "node-ajv",
"evidence": "/affected/4/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "8.17.1~ds+~3.0.1+~3.1.0-4build1",
"evidence": "/affected/4/versions"
},
{
"value": "8.20.0~ds+~cs6.1.3-1",
"evidence": "/affected/4/versions"
},
{
"value": "8.20.0~ds+~cs7.1.2-1",
"evidence": "/affected/4/versions"
},
{
"value": "8.20.0~ds+~cs7.1.3-1",
"evidence": "/affected/4/versions"
},
{
"value": "8.20.0~ds+~cs7.1.3-3",
"evidence": "/affected/4/versions"
}
]
},
{
"name": {
"value": "node-ajv",
"evidence": "/affected/5/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "8.12.0~ds+~2.1.1-5",
"evidence": "/affected/5/versions"
},
{
"value": "8.17.1~ds+~3.0.1+~3.1.0-2",
"evidence": "/affected/5/versions"
},
{
"value": "8.17.1~ds+~3.0.1+~3.1.0-4build1",
"evidence": "/affected/5/versions"
}
]
}
],
"severity": "high",
"structured": {
"id": "UBUNTU-CVE-2026-16221",
"aliases": [
"UBUNTU-CVE-2026-16221"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
},
{
"type": "Ubuntu",
"score": "medium"
}
],
"affected": [
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "node-ajv",
"purl": "pkg:deb/ubuntu/node-ajv?arch=source&distro=bionic",
"ecosystem": "Ubuntu:18.04:LTS"
},
"versions": [
"5.0.0-1"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-16221.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "node-ajv",
"binary_version": "5.0.0-1"
}
]
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "node-ajv",
"purl": "pkg:deb/ubuntu/node-ajv?arch=source&distro=focal",
"ecosystem": "Ubuntu:20.04:LTS"
},
"versions": [
"6.10.2-1"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-16221.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "node-ajv",
"binary_version": "6.10.2-1"
}
]
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "node-ajv",
"purl": "pkg:deb/ubuntu/node-ajv?arch=source&distro=jammy",
"ecosystem": "Ubuntu:22.04:LTS"
},
"versions": [
"6.12.6-2",
"6.12.6-3"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-16221.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "node-ajv",
"binary_version": "6.12.6-3"
}
]
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "node-ajv",
"purl": "pkg:deb/ubuntu/node-ajv?arch=source&distro=noble",
"ecosystem": "Ubuntu:24.04:LTS"
},
"versions": [
"6.12.6-3",
"8.12.0~ds+~2.1.1-4"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-16221.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "node-ajv",
"binary_version": "8.12.0~ds+~2.1.1-4"
}
]
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "node-ajv",
"purl": "pkg:deb/ubuntu/node-ajv?arch=source&distro=stonking",
"ecosystem": "Ubuntu:26.10"
},
"versions": [
"8.17.1~ds+~3.0.1+~3.1.0-4build1",
"8.20.0~ds+~cs6.1.3-1",
"8.20.0~ds+~cs7.1.2-1",
"8.20.0~ds+~cs7.1.3-1",
"8.20.0~ds+~cs7.1.3-3"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-16221.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "node-ajv",
"binary_version": "8.20.0~ds+~cs7.1.3-3"
}
]
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "node-ajv",
"purl": "pkg:deb/ubuntu/node-ajv?arch=source&distro=resolute",
"ecosystem": "Ubuntu:26.04:LTS"
},
"versions": [
"8.12.0~ds+~2.1.1-5",
"8.17.1~ds+~3.0.1+~3.1.0-2",
"8.17.1~ds+~3.0.1+~3.1.0-4build1"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-16221.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "node-ajv",
"binary_version": "8.17.1~ds+~3.0.1+~3.1.0-4build1"
}
]
}
}
],
"modified": "2026-10-17T12:59:53.973833171Z",
"provider": "osv",
"upstream": [
"CVE-2026-16221"
],
"references": [
"https://ubuntu.com/security/CVE-2026-16221",
"https://www.cve.org/CVERecord?id=CVE-2026-16221",
"https://github.com/fastify/fast-uri/security/advisories/GHSA-v2hh-gcrm-f6hx"
]
},
"related_cves": [
{
"value": "CVE-2026-16221",
"evidence": "/upstream"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 359896,
"published_at": "2026-07-19T15:16:00+00:00"
}