[Aikido] Fix 102 security issues in h3, lodash, lodash-es and 19 more - #79
Open
aikido-autofix[bot] wants to merge 1 commit into
Open
[Aikido] Fix 102 security issues in h3, lodash, lodash-es and 19 more#79aikido-autofix[bot] wants to merge 1 commit into
aikido-autofix[bot] wants to merge 1 commit into
Conversation
8 tasks
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), and Seroval (prototype pollution and unsafe deserialization). This update includes breaking changes that require manual migration.
Motivation
Security Impact — CVE vulnerabilities fixed by this PR:
✅ 94 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
Check our Pull Request Guidelines
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/utils/useRestAPIRequest.ts:3,10- UsesuseAuthandgetTokenui/apps/dashboard/src/routes/support/index.tsx:7,11- UsesuseAuthandisSignedInui/apps/dashboard/src/queries/server/integrations/vercel.ts:5,6- Usesauth()andgetToken()ui/apps/dashboard/src/queries/graphqlAPI.ts:2,4,5- Usesauth()andgetToken()ui/apps/support/src/data/gqlApi.ts:2,4- Usesauth()andgetToken()ui/apps/support/src/data/clerk.ts:3,11,20- Usesauth(),getToken(), andisAuthenticatedui/apps/dashboard/src/components/URQL/URQLProvider.tsx:4,11,17,24,30- UsesuseAuth,getToken, andsignOutMultiple other files using
useAuth,ClerkProvider, etc.Impact: The
getToken()method now throwsClerkOfflineErrorinstead of returningnullwhen the client is offline. Additionally, during server-side rendering,useAuth().getTokenis now a function (notundefined), and calling it will throw.Remediation: Update error handling around
getToken()calls to catchClerkOfflineErrorexceptions instead of checking fornullreturns. Review SSR code paths to ensure proper error handling whengetToken()is called during server-side rendering.@modelcontextprotocol/sdk (1.18.1 => 1.26.0)
Where your code is affected:
pkg/devserver/mcp.go:4,11,18,25,32,39,46,53,60,67,74,81,88,95- Multiple functions return*mcp.CallToolResultImpact: Non-existent tools, disabled tools, and inputSchema validation now return MCP protocol level errors instead of
CallToolResultwithisError: true. This changes the error handling pattern for tool invocations.Remediation: Update MCP tool handlers to expect protocol-level errors for validation failures instead of checking
CallToolResult.isError. Ensure error handling properly catches and processes these protocol-level errors.OpenTelemetry SDK (@opentelemetry/propagator-jaeger 2.2.0 => 2.9.0)
Where your code is affected:
pkg/telemetry/trace/tracer.go:86,96,116,126,175,215- Usestrace.NewBatchSpanProcessor(exp)andtrace.NewBatchSpanProcessor(exp, trace.WithBatchTimeout(...))pkg/tracing/tracer.go:36- Usessdktrace.NewSimpleSpanProcessor(tp.exp)Impact: The constructor call signature for
BatchSpanProcessorandSimpleSpanProcessorhas changed. The new format requires an options object:new BatchSpanProcessor({ exporter, maxQueueSize: 1000 })instead ofnew BatchSpanProcessor(exporter, { maxQueueSize: 1000 }).Remediation: This is a JavaScript/TypeScript breaking change that doesn't affect the Go codebase. The Go SDK uses a different API pattern with functional options (e.g.,
trace.WithBatchTimeout()), which remains compatible. No changes needed for Go code.Node.js Version Requirement
Where your code is affected:
ui/apps/dashboard/package.json- Specifies"node": "20.x"ui/apps/support/package.json- No explicit Node.js version specifiedImpact: Multiple packages now require Node.js 20.9.0 minimum (@clerk/shared 4.0.0, @clerk/tanstack-react-start 1.0.0, uuid 10.0.0+). The dashboard app already specifies Node 20.x, which is compatible.
Remediation: Ensure the support app also specifies Node.js 20.9.0+ in its package.json engines field to match the dashboard app and prevent runtime issues.
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.25 (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 11.1.1 (CHANGELOG)
All 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.Note
Medium Risk
Major bumps to Clerk, TanStack Start/Router, Next (shared components), and GraphQL Codegen affect auth, SSR, and codegen with no app code changes in the diff—verify builds and auth flows after install.
Overview
This PR bumps UI monorepo dependencies to pull in patched transitive versions (h3, lodash, seroval, undici, protobufjs, Clerk, Next, etc.) rather than changing application source.
At the workspace root, pnpm overrides now pin
h3@2andh3@2.0.1-rc.5to2.0.1-rc.15. Dashboard, support, and dev-server-ui move the TanStack stack (React Query, Router, Start) to newer releases; dashboard and support also jump@clerk/tanstack-react-startfrom 0.x to ^1.4.20, and dashboard bumps inngest, Segment, and pinsuuidto ^11.1.1 (down from ^13). dev-server-ui upgrades GraphQL Codegen dev tooling (cli v6, TypeScript/RTK plugins v5) and @rtk-query/graphql-request-base-query. Shared@inngest/componentsaligns TanStack versions, bumps react-use, and upgradesnextfrom 14 to ^15.5.24.Reviewed by Cursor Bugbot for commit 5a49ab2. Bugbot is set up for automated code reviews on this repo. Configure here.