vite 6.4.5
- Source
- https://github.com/vitejs/vite
- Tag scanned
v6.4.5- Directory
packages/vite- Compared with
v6.4.4(0 signals introduced since)- Files
- 370 scanned, 31 skipped (binary, oversized, or unrecognised)
- Signals
- 1 critical · 8 warn · 19 info
- Scan time
- 11.8 s
- LLM review
- Reviewed by claude-haiku-5-5 (Anthropic): 14 of 23 warn and critical signals; 14 demoted to info.
- Disclude version
- 4.0.0
- Scanned (UTC)
- 2026-10-21 09:10
Signals
Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.
-
evalValue<T = any>: T -
// eslint-disable-next-line no-restricted-globals -- this function runs inside cjs const terser = return terser. as Terser. }, -
} -
-
dynamicProcessed: await , dynamicRelative: await , dynamicAbsolute: await , dynamicAbsoluteExtension: await , -
dynamicRelative: await , dynamicAbsolute: await , dynamicAbsoluteExtension: await , dynamicAbsoluteFull: await , -
dynamicAbsolute: await , dynamicAbsoluteExtension: await , dynamicAbsoluteFull: await , dynamicFileUrl: await , -
dynamicAbsoluteExtension: await , dynamicAbsoluteFull: await , dynamicFileUrl: await , static: staticModule, -
dynamicAbsoluteFull: await , dynamicFileUrl: await , static: staticModule, } -
// escape import so that it's not bundled while config load const process.env. = 'true'likely benign A helper that performs a runtime import(id) so the config loader is not bundled.Reasoning
The dynamic import wraps a function parameter, but the surrounding comments show it is deliberately hidden from the bundler so the config loads at runtime. This is a standard build-tool pattern, not a dropper.
-
const = acceptedPath. const importPromise =likely benign HMR client dynamically imports an accepted module path, marked @vite-ignore.Reasoning
The import is annotated with @vite-ignore and builds its specifier from a base URL and an accepted path for HMR module loading. This is expected behaviour in a Vite client.
-
: Promise<any>likely benign Evaluator method that dynamically imports an external module by filepath.Reasoning
This is a module runner that evaluates external ESM files by path. Dynamic import is its core purpose and the input comes from the module graph, not untrusted sources.
-
info
warn→ info by reviewdynamic-importpackages/vite/src/node/__tests__/environment.spec.ts:171:25const chunk = . const mod = awaitdismissed Test imports a built output file via a path constructed from import.meta.dirname.Reasoning
This is a test that imports a built bundle from a path built with path.join and import.meta.dirname. It is a fixture load with no malicious indicators.
-
-
}) const mod1 = awaitdismissed Test dynamically imports a fixture module built for file-url resolution.Reasoning
The test imports a fixture file located with join(import.meta.dirname, ...). This is a normal test fixture load.
-
}) const mod2 = awaitdismissed Test dynamically imports a virtual-fixture module by a local path.Reasoning
Same pattern as the sibling finding: a test imports a fixture module by a local path. Nothing suspicious.
-
-----BEGIN CERTIFICATE----- MIID7zCCAtegAwIBAgIJS9D2rIN7tA8mMA0GCSqGSIb3DQEBCwUAMGkxFDASBgNV BAMTC2V4YW1wbGUub3JnMQswCQYDVQQGEwJVUzERMA8GA1UECBMIVmlyZ2luaWEx EzARBgNVBAcTCkJsYWNrc2J1cmcxDTALBgNVBAoTBFRlc3QxDTALBgNVBAsTBFRldismissed A PEM-encoded test certificate fixture flagged by the base64 heuristic.Reasoning
The base64 content is a PEM certificate fixture in a test file, with the BEGIN CERTIFICATE header. The raw-pass base64 heuristic fires on the normal encoding of a certificate.
-
https://evanw.github.io/source-map-visualization/#MzQALyogY29tbWVudCAqLwpjb25zb2xlLmxvZygiZm9vIik7CjE1NgB7InZlcnNpb24iOjMsInNvdXJjZXMiOlsiL3NyYy9mb28uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc29sZS5sb2coXCJmb29cIik7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQzsifQo= -
https://evanw.github.io/source-map-visualization/#NjMALy8gYi5qcwpjb25zb2xlLmxvZygiLi9iLmpzIik7CgovLyBhLmpzCmNvbnNvbGUubG9nKCIuL2EuanMiKTsKMjIwAHsKICAidmVyc2lvbiI6IDMsCiAgInNvdXJjZXMiOiBbImIuanMiLCAiYS5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc29sZS5sb2coJy4vYi5qcycpXG4iLCAiaW1wb3J0ICcuL2IuanMnXG5jb25zb2xlLmxvZygnLi9hLm -
https://evanw.github.io/source-map-visualization/#NjYALmZvbyB7CiAgb3ZlcmZsb3c6IHNjcm9sbDsKICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7Cn0KMjU1AHsKICAiZmlsZSI6ICIvc3JjL3Nhc3Mvc3R5bGUuc2FzcyIsCiAgIm1hcHBpbmdzIjogIkFBQUE7RUFDRSxnQkFBZ0I7RUNEbEIsa0NBQUE7QURFQSIsCiAgIm5hbWVzIjogW10sCiAgInNvdXJjZXMiOiBbCiAgICAiL3NyYy9zYX -
https://evanw.github.io/source-map-visualization/#MjkALmZvbyB7CiAgb3ZlcmZsb3c6IHNjcm9sbDsKfQoyMDcAewogICJmaWxlIjogIi9zcmMvc2Fzcy9zdHlsZS5zYXNzIiwKICAibWFwcGluZ3MiOiAiQUFBQTtFQUNFIiwKICAibmFtZXMiOiBbXSwKICAic291cmNlcyI6IFsKICAgICIvc3JjL3Nhc3MvdmVuZG9yL2luZGV4LnNjc3MiCiAgXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi5mb28ge1xuICBvdm -
likely benign Native ESM config loader imports the resolved config file via file URL.
Reasoning
The function imports a config file by file URL with a cache-busting query, the standard way Vite loads native ESM config. The path comes from the user's project config resolution.
-
likely benign Imports a temporarily bundled config file and removes it afterwards.
Reasoning
This imports a temp file that the code has just bundled from the user's config, then deletes it in finally. This is the normal bundle-and-load config path, not an attack.
-
// eslint-disable-next-line no-restricted-globals -- this function runs inside a cjs worker const sass: typeof Sass = // eslint-disable-next-line no-restricted-globals const path: typeof =likely benign CJS worker requires the sass preprocessor from a resolved path.Reasoning
The require uses a resolved sass path inside a CJS worker, which is a documented need for loading an optional preprocessor. The module ID comes from dependency resolution, not from attacker input.
-
// eslint-disable-next-line no-restricted-globals -- this function runs inside a cjs worker const sass: typeof Sass = // eslint-disable-next-line no-restricted-globals const path: typeof =likely benign CJS worker requires sass from a resolved path, a second occurrence.Reasoning
Same pattern as the other sass require: loading an optional preprocessor from a resolved path inside the CJS worker. Benign.
-
// https://github.com/nodejs/node/issues/31710 const sass: typeof Sass = . compilerPromise ??= sass.likely benign Imports the sass compiler via file URL for ESM interop.Reasoning
The code imports sass by file URL to work around a Node ESM issue, which is a documented compatibility pattern. The path is from resolution.
-
// eslint-disable-next-line no-restricted-globals -- this function runs inside a cjs worker const nodeLess: typeof Less = const viteResolverPlugin =likely benign CJS worker requires the less preprocessor from a resolved path.Reasoning
The code requires the less preprocessor from a resolved path inside the CJS worker. This is standard optional-dependency loading.
-
// eslint-disable-next-line no-restricted-globals -- this function runs inside a cjs worker const nodeStylus: typeof Stylus = const ref =likely benign CJS worker requires the stylus preprocessor from a resolved path.Reasoning
The code requires the stylus preprocessor from a resolved path inside the CJS worker. This is expected preprocessor loading.
Reproduce This Scan
Run disclude locally to verify. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.
&&