VDB
KO
HIGH 7.5

GHSA-4c8g-83qw-93j6

fast-uri vulnerable to host confusion via failed IDN canonicalization

Quick fix

GHSA-4c8g-83qw-93j6 — fast-uri: upgrade to the fixed version with the command below.

npm install fast-uri@4.0.1

Details

### Impact

`fast-uri` versions `>= 2.3.1, <= 4.0.0` fail to canonicalize Unicode/IDN hostnames for HTTP-family URLs. The IDN conversion path calls `URL.domainToASCII(...)` on the global WHATWG `URL` constructor, where that helper does not exist. The resulting `TypeError` is silently routed into `parsed.error`, but `parse()`, `normalize()`, and `equal()` all return with the host left in its original Unicode form.

For example, `http://127。0。0。1/` is treated by `fast-uri` as host `127。0。0。1`, while Node's WHATWG URL parser and `fetch()` canonicalize the same input to `127.0.0.1`.

Applications that use `fast-uri` to enforce host-based policy (denylists, loopback filtering, redirect validation, outbound proxy routing) before passing the same URL into Node's URL or `fetch()` consumers see a policy/use desync and can be steered to an unintended destination.

### Patches

Upgrade to `fast-uri` v4.0.1, v3.1.3, or v2.4.2

### Workarounds

None. Upgrade to the patched version.

Are you affected?

Enter the version of the package you're using.

Affected packages

npm / fast-uri
Introduced in: 4.0.0 Fixed in: 4.0.1
Fix npm install fast-uri@4.0.1
npm / fast-uri
Introduced in: 3.0.0 Fixed in: 3.1.3
Fix npm install fast-uri@3.1.3
npm / fast-uri
Introduced in: 2.3.1 Fixed in: 2.4.2
Fix npm install fast-uri@2.4.2

References