Skip to content

chore(deps): update dependency fast-uri to v4 [security] - autoclosed - #2024

Closed
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/npm-fast-uri-vulnerability
Closed

chore(deps): update dependency fast-uri to v4 [security] - autoclosed#2024
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/npm-fast-uri-vulnerability

Conversation

@renovate

@renovate renovate Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
fast-uri ^3.1.5^4.1.4 age confidence
fast-uri ^3.1.2^4.1.4 age confidence

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


fast-uri vulnerable to host confusion via skipped IDN canonicalization on scheme-relative references

CVE-2026-75931 / GHSA-5jgf-p345-68v8

More information

Details

Impact

fast-uri canonicalizes a host to its ASCII form only when the input carries an explicit scheme. When resolve() resolves a scheme-relative reference (//host/) against a scheme-bearing base, it still emits the host verbatim even though the effective scheme is known, so re-parsing the resolved URI yields a different host than the one resolve() returned. An application that resolves an untrusted reference with fast-uri and then checks or routes on the resulting host can make a policy decision on one host and reach another. This is an incomplete-fix variant of CVE-2026-13676, whose IDN canonicalization was applied only to the scheme-bearing form.

Patches

Upgrade to fast-uri 2.4.5, 3.1.6, or 4.1.3. resolve() now canonicalizes the host once the effective scheme is known, and fails closed if a raw non-ASCII host cannot be converted.

Workarounds

Resolve scheme-relative references against a base that carries a scheme before performing any host-policy or origin check.

Severity

  • CVSS Score: 7.5 / 10 (High)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


fast-uri vulnerable to server-side request forgery via repeated hostname percent-decoding

CVE-2026-75899 / GHSA-fph4-wmhf-6fwf

More information

Details

Impact

fast-uri decodes a hostname's percent escapes twice in a single normalize() or resolve() call: once during parsing and again during authority recomposition. A nested percent-encoded host therefore survives the first decode and is turned into a live destination by the second, so normalize('http://%256c%256f%2563%2561%256c%2568%256f%2573%2574/') returns http://localhost/. Applications that normalize or resolve an untrusted URI before an SSRF check, redirect validation, or host allowlist can be steered to a different destination, including internal addresses such as loopback or a cloud metadata endpoint, than the encoded input appeared to contain. This is an incomplete-fix variant of CVE-2026-6322, whose encoded-authority-delimiter fix introduced the second decode.

Patches

Fixed in fast-uri 2.4.5, 3.1.6, and 4.1.3.

Workarounds

Reject untrusted URIs whose host component contains an encoded percent sign (%25) before passing them to normalize() or resolve().

Severity

  • CVSS Score: 7.5 / 10 (High)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


fast-uri vulnerable to server-side request forgery via malformed IPv6 normalization

CVE-2026-75975 / GHSA-f65p-4m7j-42xc

More information

Details

Impact

fast-uri does not validate the complete RFC 3986 grammar for bracketed IPv6 literals, so a malformed literal with invalid trailing text is silently truncated to a different valid IPv6 address with no error reported. For example, normalize('http://[::not-valid]/private') returns http://[::]/private, and [fc00::not-hex] and [fe80::not-hex] collapse to [fc00::] and [fe80::]. An application that normalizes an untrusted URL before an outbound request, redirect, or host-policy check can be routed to a local or private address such as loopback (::1), unique-local, or link-local. Because parse().error is unset for these inputs, checking it does not protect the consumer.

Patches

Upgrade to fast-uri 2.4.5, 3.1.6, or 4.1.3. Malformed IPv6 literals are now rejected with a host error instead of being normalized to a valid address.

Workarounds

Reject untrusted URLs whose host is a bracketed IPv6 literal before passing them to fast-uri, or route outbound requests against an explicit allowlist of addresses rather than trusting the normalized host.

Severity

  • CVSS Score: 7.5 / 10 (High)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


fast-uri vulnerable to host confusion via percent-encoded scheme normalization

CVE-2026-76172 / GHSA-jqff-g426-hqxp

More information

Details

Impact

fast-uri decodes percent-encoded characters in the scheme component with the legacy global unescape() and serializes the result back as raw characters, without re-escaping it or validating it as a scheme. A scheme that decodes to characters outside the RFC 3986 scheme grammar can therefore introduce structure the original input did not contain.

For example, %2f%2fevil.example:/pwn parses with no authority (parse().host is undefined), but resolve() and normalize() return //evil.example:/pwn, which reparses with host evil.example. The %uXXXX form (%u002f%u002fevil.example:/pwn) produces the same result, and a scheme containing %0d%0a reaches the output as a raw CR LF.

Applications that normalize or resolve untrusted URLs before a redirect check, host allowlist, or outbound request decision, especially ones that treat a missing authority as same-origin, can be steered to an attacker-chosen authority, and a normalized URI placed in a response header can carry an injected CR LF.

Patches

Upgrade to fast-uri >= 4.1.3, or >= 3.1.6 in the v3.x release line, or >= 2.4.5 in the v2.x release line.

Workarounds

None. Upgrade to the patched version.

Severity

  • CVSS Score: 7.5 / 10 (High)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Release Notes

fastify/fast-uri (fast-uri)

v4.1.4

Compare Source

⚠️ Security Warning

This is a security release that fixes the following high-severity security advisories:

Users of the v4 release line should upgrade to v4.1.4.

Full Changelog: fastify/fast-uri@v4.1.3...v4.1.4

v4.1.3

Compare Source

⚠️ Security Warning

This release addresses the following high-severity security advisories:

Users of the v4 release line should upgrade to v4.1.3.

Full Changelog: fastify/fast-uri@v4.1.2...v4.1.3

v4.1.2

Compare Source

⚠️ Security Warning

Fix for GHSA-7p8r-x3mc-p8w7

What's Changed

Full Changelog: fastify/fast-uri@v4.1.1...v4.1.2

v4.1.1

Compare Source

⚠️ Security Release

Fix for GHSA-v2hh-gcrm-f6hx

Full Changelog: fastify/fast-uri@v4.1.0...v4.1.1

v4.1.0

Compare Source

v4.0.1

Compare Source

⚠️ Security Release

What's Changed

New Contributors

Full Changelog: fastify/fast-uri@v4.0.0...v4.0.1

v4.0.0

Compare Source

What's Changed

Full Changelog: fastify/fast-uri@v3.1.2...v4.0.0

v3.1.7

Compare Source

v3.1.6

Compare Source


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.


Note

Overview
Pins fast-uri to v4.1.4 across the monorepo via pnpm overrides in package.json and pnpm-workspace.yaml, with the lockfile updated from 3.1.5 to 4.1.4.

This is a major-line security bump (v3 → v4) to address high-severity URI parsing issues (host confusion, SSRF via percent-decoding/IPv6 normalization, scheme normalization, and related advisories). fast-uri@4.1.4 is also added to minimumReleaseAgeExclude so Renovate can merge the security release without waiting on the 7-day minimum release age policy.

Reviewed by Cursor Bugbot for commit 692e26c. Bugbot is set up for automated code reviews on this repo. Configure here.

@renovate
renovate Bot requested a review from a team as a code owner September 3, 2026 19:55
@renovate

renovate Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: pnpm-lock.yaml

<--- Last few GCs --->

[920:0x31924000]    48027 ms: Scavenge (reduce) (interleaved) 1496.4 (1515.6) -> 1496.4 (1514.8) MB, pooled: 0 MB, 19.80 / 0.00 ms  (average mu = 0.538, current mu = 0.440) allocation failure; 
[920:0x31924000]    48844 ms: Mark-Compact (reduce) 1497.4 (1514.8) -> 1497.3 (1515.6) MB, pooled: 0 MB, 488.66 / 0.00 ms  (+ 523.7 ms in 0 steps since start of marking, biggest step 0.0 ms, walltime since start of marking 1080 ms) (average mu = 0.415, cu

<--- JS stacktrace --->

FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
----- Native stack trace -----

 1: 0xe40d24 node::OOMErrorHandler(char const*, v8::OOMDetails const&) [/opt/containerbase/tools/node/22.22.0/bin/node]
 2: 0x1216be0 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [/opt/containerbase/tools/node/22.22.0/bin/node]
 3: 0x1216eb7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [/opt/containerbase/tools/node/22.22.0/bin/node]
 4: 0x1444875  [/opt/containerbase/tools/node/22.22.0/bin/node]
 5: 0x145e109 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/opt/containerbase/tools/node/22.22.0/bin/node]
 6: 0x14327b8 v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/opt/containerbase/tools/node/22.22.0/bin/node]
 7: 0x14336e5 v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/opt/containerbase/tools/node/22.22.0/bin/node]
 8: 0x140c015 v8::internal::Factory::AllocateRawWithAllocationSite(v8::internal::Handle<v8::internal::Map>, v8::internal::AllocationType, v8::internal::Handle<v8::internal::AllocationSite>) [/opt/containerbase/tools/node/22.22.0/bin/node]
 9: 0x1419228 v8::internal::Factory::NewJSObjectFromMap(v8::internal::Handle<v8::internal::Map>, v8::internal::AllocationType, v8::internal::Handle<v8::internal::AllocationSite>) [/opt/containerbase/tools/node/22.22.0/bin/node]
10: 0x1571892 v8::internal::Handle<v8::internal::Object> v8::internal::JSDataObjectBuilder::BuildFromIterator<v8::internal::JsonParser<unsigned char>::NamedPropertyIterator&>(v8::internal::JsonParser<unsigned char>::NamedPropertyIterator&, v8::internal::MaybeHandle<v8::internal::FixedArrayBase>) [/opt/containerbase/tools/node/22.22.0/bin/node]
11: 0x1572fcf v8::internal::JsonParser<unsigned char>::BuildJsonObject(v8::internal::JsonParser<unsigned char>::JsonContinuation const&, v8::base::SmallVector<v8::internal::JsonProperty, 16ul, std::allocator<v8::internal::JsonProperty> > const&, v8::internal::Handle<v8::internal::Map>) [/opt/containerbase/tools/node/22.22.0/bin/node]
12: 0x1576bf4  [/opt/containerbase/tools/node/22.22.0/bin/node]
13: 0x157927d v8::internal::JsonParser<unsigned char>::ParseJson(v8::internal::Handle<v8::internal::Object>) [/opt/containerbase/tools/node/22.22.0/bin/node]
14: 0x1293f19 v8::internal::Builtin_JsonParse(int, unsigned long*, v8::internal::Isolate*) [/opt/containerbase/tools/node/22.22.0/bin/node]
15: 0x1dcb3b6  [/opt/containerbase/tools/node/22.22.0/bin/node]
/usr/local/bin/node: line 18:   920 Aborted                 /opt/containerbase/tools/node/22.22.0/bin/node "$@"

@changeset-bot

changeset-bot Bot commented Sep 3, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 692e26c

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 7bc9d72. Configure here.

Comment thread package.json
@renovate renovate Bot changed the title chore(deps): update dependency fast-uri to v4 [security] chore(deps): update dependency fast-uri to v4 [security] - autoclosed Sep 4, 2026
@renovate renovate Bot closed this Sep 4, 2026
@renovate
renovate Bot deleted the renovate/npm-fast-uri-vulnerability branch September 4, 2026 01:16
@renovate renovate Bot changed the title chore(deps): update dependency fast-uri to v4 [security] - autoclosed chore(deps): update dependency fast-uri to v4 [security] Sep 8, 2026
@renovate renovate Bot reopened this Sep 8, 2026
@renovate
renovate Bot force-pushed the renovate/npm-fast-uri-vulnerability branch 2 times, most recently from 7bc9d72 to ab323c5 Compare September 8, 2026 00:06
@renovate renovate Bot changed the title chore(deps): update dependency fast-uri to v4 [security] chore(deps): update dependency fast-uri to v4 [security] - autoclosed Sep 8, 2026
@renovate renovate Bot closed this Sep 8, 2026
@renovate renovate Bot changed the title chore(deps): update dependency fast-uri to v4 [security] - autoclosed chore(deps): update dependency fast-uri to v4 [security] Sep 9, 2026
@renovate renovate Bot reopened this Sep 9, 2026
@renovate
renovate Bot force-pushed the renovate/npm-fast-uri-vulnerability branch 2 times, most recently from ab323c5 to 692e26c Compare September 9, 2026 21:58
@renovate renovate Bot changed the title chore(deps): update dependency fast-uri to v4 [security] chore(deps): update dependency fast-uri to v4 [security] - autoclosed Sep 10, 2026
@renovate renovate Bot closed this Sep 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants