vite-plugin-crypto@1.0.6
Vulnerability report · Last retrieved from osv.dev September 28, 2026 at 8:08 PM UTC
OSV ID
MAL-2026-17222
Ecosystem
npm
Summary
vite-plugin-crypto@1.0.2 exposes a Vite plugin factory whose body concatenates three option fields — secret, salt, and iv — into a single string and passes it to System.import(...) from the systemjs runtime module loader, discarding the returned promise with .then(() => {}). Only secret is used by the advertised AES-GCM encrypt() path; salt and iv are declared on the options type but are absent from the documented options table and are unused by the real crypto code (which generates its own random salt/IV per call). The concatenated string is treated as a module specifier by SystemJS, which resolves URLs and executes fetched JavaScript, so whoever controls these option values obtains arbitrary JavaScript execution on the Vite build/dev host each time the config is loaded. Pulling in a browser-oriented dynamic module loader as the package's only runtime dependency, naming the concatenated input derivedSecret, and swallowing the promise frame the remote-loader call as a benign key-derivation step. Base64 decoding in dist/index.cjs and dist/index.js is used within the AES-GCM helper. The trigger fires at plugin construction during vite build / vite dev.
Source: amazon-inspector (54ee82c069dcdf259199f5844c6ff46be3020d79609ff7b7b8ebc82017c59b2c)
Protect your entire dependency tree
Scan your lock files automatically on every PR. Block malicious packages before they reach production.