MAL-2026-17185 Malicious code in shoplist-app (npm)
Malicious package
Published
MAL-2026-17185 is a malicious package: shoplist-app (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-17185/ (Markdown: https://insights.sbomify.com/MAL-2026-17185/index.md)
- Package
- shoplist-app
- Registry
- npm
What is MAL-2026-17185?
MAL-2026-17185 is a malicious package in shoplist-app, published on 25 Sep 2026.
Official description
[email protected] is a dependency-confusion / typosquat beacon. preinstall.js is wired into every lifecycle hook (preinstall, install, postinstall, prepare, prepublish) and issues an HTTPS GET to the hardcoded endpoint https://eo8f3m3ho26a0nm.m.pipedream.net/, transmitting the installer's machine hostname via os.hostname() (smuggled into a
host HTTP header) together with package identity in the query string. index.js — the package main — independently fires a second HTTPS GET to the same Pipedream collector at require/import time, carrying os.platform() and a trigger=runtime marker. The package ships no functional code beyond these beacons; its version (99.99.99) and description ("test") are consistent with a name-squat probe designed to identify which internal build hosts resolve the name shoplist-app. The exfiltrated data (hostname, OS platform, package-name confirmation) gives the operator of the Pipedream endpoint a map of environments where a shoplist-app dependency reference successfully resolves to this public package — the standard reconnaissance stage of a dependency-confusion attack.What should I do about MAL-2026-17185?
Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.