Skip to content

fix(security): fix 6 security issues in nuxt, ws - #850

Merged
chybisov merged 1 commit into
mainfrom
fix/aikido-security-update-packages-93798476-qvaf
Aug 21, 2026
Merged

fix(security): fix 6 security issues in nuxt, ws#850
chybisov merged 1 commit into
mainfrom
fix/aikido-security-update-packages-93798476-qvaf

Conversation

@aikido-autofix

Copy link
Copy Markdown
Contributor

Which Linear task is linked to this PR?

Why was it implemented this way?

Explain the reasoning behind the implementation. Were there alternative approaches? Why was this solution chosen?

Upgrade Nuxt and ws to fix authorization bypass, RCE, information disclosure, memory exhaustion DoS, and arbitrary component instantiation vulnerabilities.

⚠️ Breaking changes analysis not available for: nuxt, ws

🤖 Remediation details

Fix GHSA-67mh-4wv8-2f99 (esbuild) and AIKIDO-2026-138234 (ws) via workspace overrides

Short summary

This PR remediates vulnerabilities in two packages — ws and esbuild — by adding targeted overrides to pnpm-workspace.yaml. The nuxt package was already at a patched version (4.5.2) and required no changes. All fixes are lockfile-only; no workspace member package.json files were modified.

ws

ws appeared in the lockfile at three vulnerable versions: 7.5.11-range instances via React Native / WalletConnect / Remix tooling parents, 8.17.1 via ethers@6.13.5 (itself pulled in by tronweb@6.2.2@tronweb3/tronwallet-abstract-adapter@1.2.0), and 8.21.0 via ethers@6.17.0, viem@2.55.19, and isows@1.0.7. Parent-chain analysis confirmed no fixing release exists for any of these immediate parents: ethers@6.17.0 (latest) and viem@2.55.19 (latest) both pin ws@8.21.0 exactly, and @tronweb3/tronwallet-abstract-adapter@1.2.0 (latest) pins tronweb@6.2.2 which in turn pins ws@8.17.1. Two targeted overrides were added — "ws@>=7.0.0 <8.0.0": ">=7.5.12" and "ws@>=8.0.0": ">=8.21.1" — resolving all instances to ws@8.21.3 (8.x) or retaining ws@7.5.13 (already patched at ≥ 7.5.12) for peer-dep slots that remain on the 7.x range.

esbuild

esbuild appeared in the lockfile at two vulnerable versions: 0.17.6 (pinned exactly by @remix-run/dev@2.17.5, the latest release, and by @vanilla-extract/integration@6.5.0 via an npm:esbuild@~0.17.6 alias) and 0.21.5 (pulled in by vite@5.4.21vite-node@1.6.1@vanilla-extract/integration@6.5.0). No fixing release exists for either immediate parent at their latest versions, and @vanilla-extract/integration@6.5.0 still depends on vite@5.x with no newer release available. A global override esbuild: ">=0.25.0" was added to pnpm-workspace.yaml, resolving all instances to esbuild@0.28.1.

Version changes

Package From To Why updated
ws 8.21.0 8.21.3 Override (ws@>=8.0.0: >=8.21.1) — direct CVE fix; ethers@6.17.0, viem@2.55.19, isows@1.0.7 pin 8.21.0 exactly with no fixing parent release
ws 8.17.1 8.21.3 Override (ws@>=8.0.0: >=8.21.1) — direct CVE fix; ethers@6.13.5tronweb@6.2.2@tronweb3/tronwallet-abstract-adapter@1.2.0, no fixing parent release
ws 7.5.13 7.5.13 Retained at patched version (≥ 7.5.12); override ws@>=7.0.0 <8.0.0: >=7.5.12 guards against regression
esbuild 0.17.6 0.28.1 Override (esbuild: >=0.25.0) — direct CVE fix; @remix-run/dev@2.17.5 and @vanilla-extract/integration@6.5.0 pin 0.17.6 with no fixing parent release
esbuild 0.21.5 0.28.1 Override (esbuild: >=0.25.0) — direct CVE fix; vite@5.4.21vite-node@1.6.1@vanilla-extract/integration@6.5.0, no fixing parent release

Visual showcase (Screenshots or Videos)

If applicable, attach screenshots, GIFs, or videos to showcase the functionality, UI changes, or bug fixes.

Checklist before requesting a review

  • I have performed a self-review and testing of my code.
  • This pull request is focused and addresses a single problem.
  • If this PR modifies the Widget API or adds new features that require documentation, I have updated the documentation in the public-docs repository.

Security Impact — CVE vulnerabilities fixed by this PR:

✅ 6 CVEs resolved by this upgrade

This PR will resolve the following CVEs:

Issue Severity           Description
AIKIDO-2026-174775
HIGH
[nuxt] An authorization bypass vulnerability exists in route rule matching where uppercase characters cause inconsistent case normalization, allowing attackers to bypass authentication middleware and other protections by accessing protected pages with differently cased URLs.
AIKIDO-2026-414718
HIGH
[nuxt] Server-side remote code execution when vue.runtimeCompiler is enabled and attacker-controlled props are forwarded to Vue's dynamic component resolution via the /__nuxt_island/ endpoint. An attacker can inject a malicious template property to execute arbitrary code within the Nitro server process.
AIKIDO-2026-483885
HIGH
[nuxt] Route caching can expose authenticated user data in /_payload.json without proper authentication checks, allowing unauthenticated or other authenticated users to access sensitive server-rendered information from cached pages.
AIKIDO-2026-858072
MEDIUM
[nuxt] Improper input validation in server islands allows attackers to instantiate arbitrary Vue components or HTML elements via crafted props, bypassing component restrictions and potentially exposing unintended functionality or information.
AIKIDO-2026-295422
LOW
[nuxt] A network-reachable dev server's Chrome DevTools endpoint incorrectly validates local-only access using request headers instead of peer address, allowing unauthenticated attackers to retrieve the project root path and workspace UUID. This information disclosure vulnerability affects any host that can reach the dev server on the network.
AIKIDO-2026-138234
HIGH
[ws] A remote attacker can send fragmented WebSocket frames with high default limits on fragment retention, causing excessive heap memory consumption and denial of service without completing the message or exceeding payload limits.

@aikido-autofix aikido-autofix Bot added the Aikido Label created by Aikido AutoFix label Aug 21, 2026
@changeset-bot

changeset-bot Bot commented Aug 21, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: fbd8be1

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

@github-actions

Copy link
Copy Markdown
Contributor

✅ E2E Dev Smoke — passing

Check Result
Dev server start (pnpm dev) ✅ started
Smoke tests ✅ passed

4 passed · 0 failed · 0 skipped · 32s

View run

@github-actions

Copy link
Copy Markdown
Contributor

E2E Examples — all passed

All examples passed in the latest run.

@github-actions

Copy link
Copy Markdown
Contributor

E2E Playground results

passed  158 passed

Details

stats  158 tests across 10 suites
duration  2 minutes, 23 seconds
commit  fbd8be1

📥 Download full HTML report (open the run → Artifacts → playwright-report)

@chybisov
chybisov merged commit 397034c into main Aug 21, 2026
37 checks passed
@chybisov
chybisov deleted the fix/aikido-security-update-packages-93798476-qvaf branch August 21, 2026 12:35
chybisov added a commit that referenced this pull request Aug 21, 2026
#850 added `ws@>=7.0.0 <8.0.0` and `ws@>=8.0.0` overrides but never ran
`pnpm dedupe`, so the lockfile still carried ws@7.5.13 alongside ws@8.21.3.
The vulnerable copy stayed in the tree via @remix-run/dev and jayson (through
isomorphic-ws), which is exactly what those overrides were meant to remove —
the fix was only half-applied, and `pnpm dedupe --check` failed on main.

`pnpm dedupe` collapses ws to a single 8.21.3 and the check passes again.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Aikido Label created by Aikido AutoFix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant