MAL-2026-14391 Malicious code in fund-calculator (npm)
Malicious package
Published
MAL-2026-14391 is a malicious package: fund-calculator (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-14391/ (Markdown: https://insights.sbomify.com/MAL-2026-14391/index.md)
- Package
- fund-calculator
- Registry
- npm
What is MAL-2026-14391?
MAL-2026-14391 is a malicious package in fund-calculator, published on 24 Aug 2026.
Official description
Package declares a preinstall script (
node index.js) that fires unconditionally on npm install. index.js reads installer-side identifiers via os.hostname(), os.userInfo(), INIT_CWD, home directory, and the parent project's package.json (name/author/repository/homepage), and additionally resolves the installer's public IP via https requests to api.ipify.org, icanhazip.com, and ifconfig.me. The collected data is transmitted to the hardcoded callback da51rv0hb2uc72tg4gvgdepinjcallbk1.oast.fun over three channels: HTTP POST to port 80, HTTPS POST to port 443 on path /poc/${uuid}, and DNS resolution of hex-encoded payload chunks (Buffer.from(body).toString('hex') split into 60-character labels) emitted as subdomains under the callback host to bypass egress filters that permit DNS but block outbound HTTP. The 999.9.12 version number and package name are consistent with a dependency-confusion name-squat designed to win resolution against a private internal package of the same name.What should I do about MAL-2026-14391?
Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.