MAL-2026-17293 Malicious code in @selfpentest/eslint-pentest-plugin (npm)
Malicious package
Published
MAL-2026-17293 is a malicious package: @selfpentest/eslint-pentest-plugin (npm). Every version was published to cause harm.
Task:
1. Search this repository's dependency manifests and lockfiles for the package, including transitive dependencies.
2. If it is present, remove it, regenerate the lockfile with the project's package manager, and replace whatever it was used for.
3. List any CI runners, developer machines or containers that installed it, so their secrets can be rotated.
4. If the package is not used anywhere, say so and change nothing.
Reference: https://insights.sbomify.com/MAL-2026-17293/ (Markdown: https://insights.sbomify.com/MAL-2026-17293/index.md)
- Package
- @selfpentest/eslint-pentest-plugin
- Registry
- npm
What is MAL-2026-17293?
MAL-2026-17293 is a malicious package in @selfpentest/eslint-pentest-plugin, published on 29 Sep 2026.
Official description
Package presents itself as an ESLint plugin but the exported plugin object is an empty shell. index.js unconditionally invokes a steal() routine at top level, so any require() of the package (including ESLint auto-loading the plugin) triggers the payload. The payload reads process.env.HOME and process.env.SECRET, reads the first 30 bytes of ~/.ssh/known_hosts via fs.readFileSync(path.join(os.homedir(), '/.ssh/known_hosts')), and issues an HTTP GET to http://localhost:1337/eslint with the collected values as URL query parameters. The package.json description and README state that the package 'pretends to be an eslint plugin but it steals secrets instead' and identify it as a supply-chain-attack demonstration. The exfiltration destination is loopback (127.0.0.1:1337), so bytes do not leave the host unless a local listener collects them, but the credential-read code path executes on every require of the package.
What should I do about MAL-2026-17293?
Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.