MAL-2026-12280 Malicious code in tinkoff-terminal-kit-datetime (npm)
Malicious package
Published
MAL-2026-12280 is a malicious package: tinkoff-terminal-kit-datetime (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-12280/ (Markdown: https://insights.sbomify.com/MAL-2026-12280/index.md)
- Package
- tinkoff-terminal-kit-datetime
- Registry
- npm
What is MAL-2026-12280?
MAL-2026-12280 is a malicious package in tinkoff-terminal-kit-datetime, published on 5 Aug 2026.
Official description
The package's main index.js unconditionally requires runtime.js, which on any require/import selects a platform-specific endpoint and downloads an opaque binary over HTTPS from author-controlled Cloudflare Workers hosts (oob-worker.cf100-416.workers.dev, oob-worker.cf101-adf.workers.dev, oob-worker.cf99-9b3.workers.dev, oob-worker.cf103-070.workers.dev), with a DNS TXT chunked-base64 fallback via tin.dl.well1.site, tina.dl.well1.site, ldr.dl.well1.site, and win.dl.well1.site. The destination hostnames are assembled from split string fragments (e.g. "oob-worker.cf100-416.wor"+"ke"+"rs.de"+"v") and require is accessed indirectly (require("child"+"process")) to defeat static analysis. The downloaded bytes are written to /tmp or %TEMP% under a disguised name (.cache_<hex> on Unix, dotnet_diag_<hex>.exe on Windows), chmod 0755, and spawned detached via /bin/sh -c or cmd.exe with unref(). There is no version pinning, no hash or signature verification, and the package's declared purpose is a datetime library with no legitimate need for a native binary. A sibling lib/telemetry.js repeats the same child_process + base64 + chmod 755 pattern. The name resembles a Tinkoff-adjacent scope, consistent with a typosquat lure delivering an opaque second-stage payload.
What should I do about MAL-2026-12280?
Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.