[Aikido] Fix 103 security issues in h3, lodash, lodash-es and 20 more - #77
Closed
aikido-autofix[bot] wants to merge 1 commit into
Closed
[Aikido] Fix 103 security issues in h3, lodash, lodash-es and 20 more#77aikido-autofix[bot] wants to merge 1 commit into
aikido-autofix[bot] wants to merge 1 commit into
Conversation
8 tasks
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit c6c7b95. Configure here.
| "pbkdf2@<=3.1.2": ">=3.1.3", | ||
| "pbkdf2@>=3.0.10 <=3.1.2": ">=3.1.3", | ||
| "form-data@>=3.0.0 <3.0.4": ">=3.0.4", | ||
| "h3@2.0.1-rc.5": "2.0.1-rc.15", |
There was a problem hiding this comment.
h3 override misses other versions
High Severity
The new pnpm override remaps only exact h3@2.0.1-rc.5 to 2.0.1-rc.15. The lockfile still resolves h3@2.0.1-rc.11 and h3@1.15.11, so TanStack/Nitro or Inngest paths on those versions keep the SSE-injection and serveStatic issues this PR claims to close.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit c6c7b95. Configure here.
Author
|
Closed by Aikido: a new AutoFix has been created → #78 |
aikido-autofix
Bot
deleted the
fix/aikido-security-update-packages-100749316-p8vd
branch
August 31, 2026 00:30
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Description
Upgrade dependencies to fix critical RCE vulnerabilities in H3 (SSE injection), Lodash (code injection via template imports), Protobufjs (arbitrary code injection), Seroval (prototype pollution and type confusion RCE), and other packages. This update includes breaking changes that require manual migration.
Motivation
Security Impact — CVE vulnerabilities fixed by this PR:
✅ 95 CVEs resolved by this upgrade, including 10 critical 🚨 CVEs
This PR will resolve the following CVEs:
serveStatic()via percent-encoded dot segments (%2e%2e) allows unauthenticated attackers to read arbitrary files outside the static directory on Node.js deployments. The vulnerability stems from insufficient path normalization before passing user-controlled paths to filesystem callbacks.protofield, enabling prototype chain manipulation and unintended property injection across the application.__proto__orconstructor, potentially influencing application behavior or enabling further attacks.__proto__,constructor, orprototypeinto internal objects, potentially modifying the prototype chain and influencing application behavior or enabling further attacks.DELETE/OPTIONSrequests allows attackers to bypass route restrictions and access unintended backend endpoints. An attacker could smuggle malicious requests to internal or admin routes through request boundary disagreement between proxy and backend.fetchcache keys are derived from lossy text decoding of request bodies, allowing distinct requests with different bodies to share cache entries and leak confidential response data between callers. The vulnerability affects the App Router and is fixed by keying the cache on raw body bytes instead.beforeInteractivescript serialization allows attackers to break script boundaries and execute arbitrary JavaScript in the browser (RCE).fetchresponses fails to account for request body differences, allowing unauthorized users to receive cached responses containing confidential data from other requests. This information disclosure vulnerability affects applications using the App Router.__proto__payloads in unsanitized user input, potentially leading to application logic bypass or information disclosure.Type of change (choose one)
Checklist
Breaking Changes & Upgrade Impact — prefer Warnings / Cautions /⚠️ sections over implementation sections (upgrade risks, breaking changes, manual migration steps):
@clerk/tanstack-react-start (0.26.10 => 1.4.20)
Where your code is affected:
ui/apps/dashboard/src/components/URQL/URQLProvider.tsx(lines 35, 40)ui/apps/dashboard/src/utils/useRestAPIRequest.ts(line 13)ui/apps/support/src/data/gqlApi.ts(line 5)ui/apps/support/src/data/clerk.ts(lines 7, 13)ui/apps/dashboard/src/queries/server/integrations/vercel.ts(line 10)ui/apps/dashboard/src/queries/graphqlAPI.ts(line 7)ui/apps/dashboard/src/lib/auth.ts(line 7)Impact:
getToken()now throwsClerkOfflineErrorinstead of returningnullwhen the client is offline. Code currently checks fornullor falsy values but doesn't handle the new exception.Remediation: Add try-catch blocks around
getToken()calls to handleClerkOfflineErrorexceptions, or update conditional checks to handle the thrown error appropriately.Where your code is affected:
ui/apps/dashboard/src/start.ts(line 6)ui/apps/support/src/start.ts(line 1)Impact:
clerkMiddlewarefunction no longer accepts individual props as functions; must use options callback pattern.Remediation: If passing configuration to
clerkMiddleware(), migrate from prop function form to options callback pattern (e.g.,clerkMiddleware(({ url }) => ({ domain: url.hostname }))).@clerk/shared (3.36.0 => 4.25.5)
Where your code is affected:
Node.js version requirement increased to 20.9.0
ui/apps/dashboard/package.jsonspecifies"node": "20.x"(compatible)ui/apps/support/package.jsonhas no explicit engine requirementImpact: Minimum Node.js version requirement increased from 18.17.0 to 20.9.0. The dashboard app already requires Node 20.x, but the support app doesn't specify a version.
Remediation: Add
"engines": { "node": "20.x" }toui/apps/support/package.jsonto ensure compatibility.OpenTelemetry SDK (@opentelemetry/sdk-node 0.208.0 => 0.217.0)
Where your code is affected:
pkg/telemetry/trace/tracer.go(lines 178, 195, 212, 229, 283, 323)pkg/tracing/tracer.go(line 85)Impact:
BatchSpanProcessorandSimpleSpanProcessorconstructor call signatures changed. The code usestrace.NewBatchSpanProcessor(exp)andsdktrace.NewSimpleSpanProcessor(tp.exp)with the old signature where the exporter is passed as the first positional argument.Remediation: Update all
NewBatchSpanProcessorandNewSimpleSpanProcessorcalls to use the new options object format:trace.NewBatchSpanProcessor(trace.BatchSpanProcessorOptions{Exporter: exp})andsdktrace.NewSimpleSpanProcessor(sdktrace.SimpleSpanProcessorOptions{Exporter: tp.exp}).uuid (9.0.1 => 11.1.1)
Where your code is affected:
ui/apps/dashboard/package.jsonspecifies"uuid": "^13.0.0"(already on v13, not affected by v9→v11 upgrade)Impact: None - the dashboard is already using uuid v13, which is beyond the breaking changes in v10-v11.
Remediation: No action needed.
All breaking changes by upgrading lodash from version 4.17.21 to 4.18.1 (CHANGELOG)
_.unset/_.omitnow blockconstructorandprototypeas non-terminal path keys unconditionally. Calls that previously returnedtrueand deleted the property now returnfalseand leave the target untouched._.templatenow throws"Invalid imports option passed into _.template"whenimportskeys contain forbidden identifier characters, which were previously allowed.All breaking changes by upgrading lodash-es from version 4.17.21 to 4.18.1 (CHANGELOG)
_.unset/_.omit:constructorandprototypeare now blocked unconditionally as non-terminal path keys. Calls that previously returnedtrueand deleted the property now returnfalseand leave the target untouched._.template:importskeys containing forbidden identifier characters now throw"Invalid imports option passed into _.template"error, where previously they were accepted.All breaking changes by upgrading undici from version 7.16.0 to 7.29.0 (CHANGELOG)
All breaking changes by upgrading next from version 14.2.35 to 15.5.24 (CHANGELOG)
squooshin favor ofsharpas optional dependency for next/imageContent-Dispositiontoattachmentfor next/imagesrchas leading or trailing space in next/imagenext/headchildren reconciler by defaultgeoandipfromNextRequestnext lint"use server"and"use cache") at the same level will no longer be allowed.thisandargumentsin server functions: server functions can no longer usethisorarguments, which will break existing server functions that rely on these features.superin static class methods with server function directives: static class methods with server function directives cannot usesuper, breaking code that previously did so."use cache"is used withoutdynamicIOenabled: builds will now fail if"use cache"is used without enabling thedynamicIOflag.internal_disableSyncDynamicAPIWarningsflagcolorminfeature fromcssnanoexperimental.reactOwnerStackflagrootParams()is now a plain Promise (not exotic)--no-manglingCLI option fornext builddevIndicatorsoptionsappIsrStatusandbuildActivitydevIndicators.buildActivityPositionand renamed topositionoutput: exportis used with intercepting routesuseCacheis enabled and Edge runtime is usedrootParams()incachescopeforwardRefremoved from Link in App RouterlegacyBehaviorprop--turbopackflag withnext start, otherwise throws errorserver.mjsfor standalone withtype: moduleuseMDXComponentsargument removedexperimental.strictNextHeadremovedcookies&headersat runtime in Cache Componentsexperimental.dynamicIOrenamed toexperimental.cacheComponentsunstable_rootParamsdeprecated with warningAll breaking changes by upgrading uuid from version 9.0.1 to 13.0.2 (CHANGELOG)
All breaking changes by upgrading ws from version 8.18.0 to 8.21.3 (CHANGELOG)
maxBufferedChunksandmaxFragmentsoptions that restrict the volume of tiny fragments and data chunks that can be sent by a peerAll breaking changes by upgrading js-cookie from version 3.0.5 to 3.0.7 (CHANGELOG)
All breaking changes by upgrading form-data from version 4.0.4 to 4.0.6 (CHANGELOG)
"characters, which may change the behavior of code that previously relied on these characters being passed through unescaped.Check our Pull Request Guidelines
Note
Medium Risk
Large indirect upgrades touch auth (Clerk major), TanStack SSR stack, Next 15 in shared components, and GraphQL codegen majors—regression risk is mostly build/runtime compatibility rather than new app logic.
Overview
Bumps UI workspace dependencies and pnpm overrides to address reported CVEs in transitive packages (notably h3, lodash, js-cookie, and related stacks), without application source changes in this diff.
Dashboard and support align on newer @clerk/tanstack-react-start (~1.4.x), TanStack Router/Start/React Query (~1.168 / 5.102), plus inngest and a uuid patch on dashboard. dev-server-ui upgrades @graphql-codegen tooling to v5/v6 and bumps @rtk-query/graphql-request-base-query and React Query. @inngest/components moves next from 14.x to ^15.5.24 and matches React Query versions.
The root ui/package.json adds overrides pinning h3@2.0.1-rc.5 to 2.0.1-rc.15 and forcing js-cookie v2/v3 consumers to 3.0.7.
Reviewed by Cursor Bugbot for commit c6c7b95. Bugbot is set up for automated code reviews on this repo. Configure here.