fix(security): Fix 12 security issues in nuxt, ws, sharp and 1 more - #840
Closed
aikido-autofix[bot] wants to merge 1 commit into
Closed
fix(security): Fix 12 security issues in nuxt, ws, sharp and 1 more#840aikido-autofix[bot] wants to merge 1 commit into
aikido-autofix[bot] wants to merge 1 commit into
Conversation
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.
Upgrade Nuxt, ws, sharp, and react-router to fix authorization bypass, RCE via template injection, and information disclosure vulnerabilities. This update includes breaking changes that require manual migration.
Where your code is affected:
examples/nuxt/components/WidgetContainer.vue(lines 9-28)Impact: The component uses Vue Options API syntax (
export default { components: {...}, setup() {...} }). With Nuxt 4.5.1, the Options API is disabled by default for v5+, which will cause this component to fail at runtime.Remediation: Either enable Options API in
nuxt.config.tsby addingvue: { optionsApi: true }configuration, or refactor the component to use Composition API with<script setup>syntax.React Router (7.18.1 => 8.3.0)
Where your code is affected:
examples/react-router/app/entry.client.tsx(line 4)Impact: The code already imports
HydratedRouterfromreact-router/dom, which is the correct v8 import path. However, the example is upgrading from v7.18.1 to v8.3.0, which requires Node.js >= 22.22.0 (already satisfied) and React >= 19.2.7 (already satisfied). The breaking change about removingreact-router-dompackage doesn't affect this code since it's already using the new import structure.Remediation: No code changes needed - the imports are already using the v8 structure. Ensure Node.js version is >= 22.22.0 and React version is >= 19.2.7 (both already satisfied in package.json).
All breaking changes by upgrading nuxt from version 4.5.0 to 4.5.1 (CHANGELOG)
vue.optionsApiconfigurationtemplateisland prop is now rejected when using runtime compilerasprop is now rejected for islandsAll breaking changes by upgrading sharp from version 0.34.5 to 0.35.0 (CHANGELOG)
installscript frompackage.jsonfile. Compiling from source is now opt-in via thebuildscript.iqquality metrics.limitInputChannelswith a default value of 5.failOnErrorconstructor property.paletteBitDepthfrommetadataresponse.sharpenoperation.format.jp2kasformat.jp2for API consistency.All breaking changes by upgrading react-router from version 7.18.1 to 8.3.0 (CHANGELOG)
future.v8_trailingSlashAwareDataRequestsflag - trailing slash-aware data request URLs are now the default behaviortsconfig.jsontarget/libfromES2020 -> ES2022packages/to ESM-onlydataparameter in favor ofloaderDataformetaAPIsfuture.v8_passThroughRequestsflag - the raw incomingrequestis now always passed through toloader/actionhasErrorBoundaryfield fromrouter.routes-hasErrorBoundaryis no longer accepted onRouteObject,DataRouteObject,<Route>JSX props, or as a key inlazyroute definitionsreact-router-dompackage - imports must be changed toreact-router/domforRouterProvider/HydratedRouterandreact-routerfor everything elsefuture.v8_middlewareflag - middleware is always enabled andgetLoadContextfunctions must return aRouterContextProviderinstance instead of a plain objecthref/generatePathper RFC 3986 path-segment rules instead ofencodeURIComponent- characters like$ & + , ; = : @are no longer percent-encoded✅ 12 CVEs resolved by this upgrade
This PR will resolve the following CVEs:
vue.runtimeCompileris enabled and attacker-controlled props are forwarded to Vue's dynamic component resolution via the/__nuxt_island/endpoint. An attacker can inject a malicioustemplateproperty to execute arbitrary code within the Nitro server process./__nuxt_island/props into a dynamic component whenvue.runtimeCompiler: trueis enabled, allowing arbitrary template execution in the Nitro process. This results in remote code execution on the server./_payload.jsonwithout proper authentication checks, allowing unauthenticated or other authenticated users to access sensitive server-rendered information from cached pages.asprop to the /__nuxt_island/ endpoint to manipulate dynamic component resolution, potentially enabling arbitrary code execution through component injection. This vulnerability affects the framework's island rendering feature.> [!NOTE]
> This only affects your application if you are using the unstable RSC APIs