MAL-2026-12345 Malicious code in calendar-streak-core (npm)
Malicious package
Published
MAL-2026-12345 is a malicious package: calendar-streak-core (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-12345/ (Markdown: https://insights.sbomify.com/MAL-2026-12345/index.md)
- Package
- calendar-streak-core
- Registry
- npm
What is MAL-2026-12345?
MAL-2026-12345 is a malicious package in calendar-streak-core, published on 5 Aug 2026.
Official description
[email protected] is advertised as a dependency-free calendar-day and streak math library, but index.mjs embeds a hex-encoded Windows PE executable (MZ header) in a
_bin string array together with a hex-encoded destination path that decodes to %AppData%/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/vite-native-helper.exe. A _decode helper (Buffer.from(h,'hex').toString()) and a block labeled 'Decode and write embedded payload' execute at top-level module import, dropping the executable into the per-user Startup folder so it runs on every subsequent Windows logon. In-code comments claim the module 'touches no network and no filesystem' while the code performs exactly that. Both the payload bytes and the destination path are stored as split hex fragments joined at runtime to evade string-level inspection, and the shipped module is ~500KB dominated by the encoded PE, which is inconsistent with the advertised calendar-math scope. Any project on Windows that imports (directly or transitively) this package gains persistent execution of the embedded binary at logon.What should I do about MAL-2026-12345?
Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.