{"id":"UBUNTU-CVE-2026-6321","details":"fast-uri decoded percent-encoded path separators and dot segments before applying dot-segment removal in its normalize() and equal() functions. Encoded path data was treated like real slashes and parent-directory references, so distinct URIs could collapse onto the same normalized path. Applications that normalize or compare attacker-controlled URLs to enforce path-based policy can be bypassed, with a path that appears confined under an allowed prefix normalizing to a different location. Versions \u003c= 3.1.0 are affected. Update to 3.1.1 or later.","modified":"2026-06-30T18:17:53.412347872Z","published":"2026-05-04T20:16:00Z","upstream":["CVE-2026-6321"],"references":[{"type":"REPORT","url":"https://ubuntu.com/security/CVE-2026-6321"},{"type":"REPORT","url":"https://www.cve.org/CVERecord?id=CVE-2026-6321"},{"type":"REPORT","url":"https://github.com/fastify/fast-uri/security/advisories/GHSA-q3j6-qgpj-74h6"}],"affected":[{"package":{"name":"node-ajv","ecosystem":"Ubuntu:18.04:LTS","purl":"pkg:deb/ubuntu/node-ajv?arch=source&distro=bionic"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.0.0-1"],"ecosystem_specific":{"binaries":[{"binary_version":"5.0.0-1","binary_name":"node-ajv"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-6321.json"}},{"package":{"name":"node-ajv","ecosystem":"Ubuntu:20.04:LTS","purl":"pkg:deb/ubuntu/node-ajv?arch=source&distro=focal"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["6.10.2-1"],"ecosystem_specific":{"binaries":[{"binary_version":"6.10.2-1","binary_name":"node-ajv"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-6321.json"}},{"package":{"name":"node-ajv","ecosystem":"Ubuntu:22.04:LTS","purl":"pkg:deb/ubuntu/node-ajv?arch=source&distro=jammy"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["6.12.6-2","6.12.6-3"],"ecosystem_specific":{"binaries":[{"binary_version":"6.12.6-3","binary_name":"node-ajv"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-6321.json"}},{"package":{"name":"node-ajv","ecosystem":"Ubuntu:24.04:LTS","purl":"pkg:deb/ubuntu/node-ajv?arch=source&distro=noble"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["6.12.6-3","8.12.0~ds+~2.1.1-4"],"ecosystem_specific":{"binaries":[{"binary_name":"node-ajv","binary_version":"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-6321.json"}},{"package":{"name":"node-ajv","ecosystem":"Ubuntu:25.10","purl":"pkg:deb/ubuntu/node-ajv?arch=source&distro=questing"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["8.12.0~ds+~2.1.1-5"],"ecosystem_specific":{"binaries":[{"binary_version":"8.12.0~ds+~2.1.1-5","binary_name":"node-ajv"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-6321.json"}},{"package":{"name":"node-ajv","ecosystem":"Ubuntu:26.04:LTS","purl":"pkg:deb/ubuntu/node-ajv?arch=source&distro=resolute"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"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"],"ecosystem_specific":{"binaries":[{"binary_name":"node-ajv","binary_version":"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-6321.json"}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"},{"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"}]}