{"id":"CVE-2026-6321","aliases":["GHSA-q3j6-qgpj-74h6"],"url":"https://o3.security/vulnerability/CVE-2026-6321","summary":"fast-uri vulnerable to path traversal via percent-encoded dot segments","details":"### Impact\n\n`fast-uri` v3.1.0 and earlier decodes percent-encoded path separators (`%2F`) and dot segments (`%2E`) before applying dot-segment removal in `normalize()` and `equal()`. This makes encoded path data behave like real `/` and `..`, so distinct URIs collapse onto the same normalized path.\n\nFor example, `http://example.com/public/%2e%2e/admin` normalizes to `http://example.com/admin`, and `equal()` considers them the same URI.\n\nApplications that normalize or compare attacker-controlled URLs to enforce path-based policy can be bypassed. A path that looks confined under an allowed prefix can normalize to a different location.\n\n### Patches\n\nUpgrade to `fast-uri` >= 3.1.1, or if you are in the v2.x release line, v2.4.1\n\n### Workarounds\n\nNone. Upgrade to the patched version.","published":"2026-05-04T19:31:57.253Z","modified":"2026-09-12T03:30:24.198177254Z","cvss":{"score":7.5,"severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"},"epss":{"score":0.00634,"percentile":0.48795,"asOf":"2026-09-17"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"npm","name":"fast-uri","fixedVersion":"3.1.1"},{"ecosystem":"npm","name":"fast-uri","fixedVersion":"2.4.1"}],"fix":null,"references":[{"type":"WEB","url":"https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-6321.json"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:19238"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:20338"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:21338"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:24473"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:24766"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:24866"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:24977"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:25089"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:25123"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:26214"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:26234"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:26416"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:26420"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:34342"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:37385"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:42078"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:42079"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:56366"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:56431"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:56928"},{"type":"ADVISORY","url":"https://access.redhat.com/errata/RHSA-2026:57013"},{"type":"ADVISORY","url":"https://access.redhat.com/security/cve/CVE-2026-6321"},{"type":"ADVISORY","url":"https://cna.openjsf.org/security-advisories.html"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/6xxx/CVE-2026-6321.json"},{"type":"ADVISORY","url":"https://github.com/fastify/fast-uri/security/advisories/GHSA-q3j6-qgpj-74h6"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-6321"},{"type":"REPORT","url":"https://bugzilla.redhat.com/show_bug.cgi?id=2466582"},{"type":"WEB","url":"https://github.com/fastify/fast-uri/releases/tag/v3.1.1"},{"type":"WEB","url":"https://github.com/fastify/fast-uri/releases/tag/v2.4.1"},{"type":"PACKAGE","url":"https://github.com/fastify/fast-uri"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-09-12T03:30:24.198177254Z"}}