{"id":"CVE-2026-119198","kind":"vulnerability","aliases":["CVE-2026-119198"],"related":[],"title":"Nuxt dev server lets a network client read arbitrary local files","description":"Nuxt is an open-source web development framework for Vue.js. From 4.6.0 until 4.6.3, a client with TCP access to an exposed Nuxt development server can send a nuxt:dev:client-error event over the HMR socket with an absolute file path at the end of its message. The development server reads that file while building the client error report and returns its contents through the error overlay, development error channel, and terminal report, bypassing Vite's server.fs allow list. The default localhost binding limits remote exposure, cross-origin browser requests are rejected, production builds and Nuxt 3 are not affected, and no browser interaction is required. This issue is fixed in version 4.6.3.","summary":"From Nuxt 4.6.0 through 4.6.2, a client that can reach the development server over TCP can send a crafted HMR client-error event containing an absolute file path. The dev server then returns that file's contents through its error overlay and terminal output, bypassing Vite's file allow list.","severity":"medium","cvss":5.9,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["node","nuxt","package","self-hosted","vue"],"not_affected_if":["cross-origin-blocked","localhost-binding","nuxt-3","production-build"],"how_to_check":null,"fix":"- Nuxt `4.6.3`","status":"open","published_at":"2026-10-29T21:17:18+00:00","first_seen_at":"2026-10-29T21:26:51+00:00","triaged_at":"2026-10-29T21:28:51+00:00","updated_at":"2026-10-29T21:28:51+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-29T21:28:51Z","model":"claude-haiku-5-5","output":{"fix":"- Nuxt `4.6.3`","reach":"network","title":"Nuxt dev server lets a network client read arbitrary local files","impact":"medium","summary":"From Nuxt 4.6.0 through 4.6.2, a client that can reach the development server over TCP can send a crafted HMR client-error event containing an absolute file path. The dev server then returns that file's contents through its error overlay and terminal output, bypassing Vite's file allow list.","audience":"developers","category":"package","nicknames":[],"who_cares":["nuxt","vue","node","self-hosted"],"confidence":0.8,"fix_status":"available","needs_auth":"no","worst_case":"Arbitrary local files readable by a network client on the dev server.","analyst_note":"","how_to_check":"- Run `npx nuxt --version` or check the `nuxt` version in `package.json` and the lockfile to see whether it is between `4.6.0` and `4.6.2`.\n- Check whether the dev server is bound to a non-localhost address (for example `--host` or `host` set in `nuxt.config`), since the default localhost binding limits remote exposure.","plain_action":"","needs_analyst":false,"not_affected_if":["production-build","nuxt-3","localhost-binding","cross-origin-blocked"],"who_is_affected":"Only teams running the Nuxt 4 development server (`nuxt dev`) on versions 4.6.0 to 4.6.2 where the dev port is reachable from other machines. Production builds and Nuxt 3 are not affected, and the default localhost binding limits remote exposure. Teams that only build and deploy static or production output can skip it.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000722,"input_tokens":4225,"output_tokens":598,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-119198':14A,17A '-2026':13A,16A '3':176C '4.6.0':27B,88C '4.6.2':29B '4.6.3':90C,192C 'absolut':51B,117C 'access':95C 'affect':179C 'allow':74B,156C 'arbitrari':9A 'bind':161C 'browser':168C,182C 'build':133C,173C 'bypass':70B,152C 'channel':148C 'client':7A,31B,46B,92C,108C,135C 'client-error':45B,107C 'contain':49B 'content':62B,141C 'craft':43B 'cross':166C 'cross-origin':165C 'cve':12A,15A 'default':159C 'dev':2A,55B,106C 'develop':36B,83C,100C,127C,146C 'end':122C 'error':47B,65B,109C,136C,144C,147C 'event':48B,110C 'expos':98C 'exposur':164C 'file':11A,52B,60B,73B,118C,131C 'fix':189C 'framework':84C 'hmr':44B,113C 'host':23B 'interact':183C 'issu':187C 'let':4A 'limit':162C 'list':75B,157C 'local':10A 'localhost':160C 'messag':125C 'network':6A 'node':18B 'nuxt':1A,19B,26B,76C,99C,105C,175C 'open':80C 'open-sourc':79C 'origin':167C 'output':69B 'overlay':66B,145C 'packag':20B 'path':53B,119C 'product':172C 'reach':34B 'read':8A,129C 'reject':171C 'remot':163C 'report':137C,151C 'request':169C 'requir':185C 'return':58B,139C 'self':22B 'self-host':21B 'send':41B,103C 'server':3A,37B,56B,101C,128C 'server.fs':155C 'socket':114C 'sourc':81C 'tcp':39B,94C 'termin':68B,150C 'version':191C 'vite':71B,153C 'vue':24B 'vue.js':86C 'web':82C","nicknames":[],"mitigations":[],"who_affected":"Only teams running the Nuxt 4 development server (`nuxt dev`) on versions 4.6.0 to 4.6.2 where the dev port is reachable from other machines. Production builds and Nuxt 3 are not affected, and the default localhost binding limits remote exposure. Teams that only build and deploy static or production output can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"first_public_at":"2026-10-29T21:17:18+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-119198","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119198","severity":null,"published_at":"2026-10-29T21:17:18+00:00","modified_at":"2026-10-29T21:17:18+00:00","first_seen_at":"2026-10-29T21:26:51+00:00","fetched_at":"2026-10-29T21:26:51+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}