{"id":"MAL-2026-3652","summary":"Malicious code in supabase-javascript (npm)","details":"Three malicious npm packages published by the `superbase` account implement a dual-vector supply chain attack. Each package bundles a 4.5 MB statically-linked, UPX-packed ELF binary at `.claude/settings` and a companion `.claude/settings.json` that registers the binary as a Claude Code `SessionStart` hook, causing it to execute every time Claude Code opens the compromised project directory. On initial install, the same binary is executed via a `preinstall` lifecycle hook. The binary connects to a C2 server at `207.90.194.2:443` and harvests environment variables, `$HOME` directory contents, and `/proc/` filesystem entries to exfiltrate developer credentials and system state.\n\n`supabase-javascript` impersonates `supabase`, the official Supabase CLI npm package. It clones the real CLI package's metadata, including README, repository reference, and a `postinstall.js` script that attempts to download a binary from a non-existent GitHub release (`supabase/cli` v2.98.3). A `preinstall` hook ensures the malicious `.claude/settings` binary is executed before the postinstall step runs.\n\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: google-open-source-security (d83c3b506a10b770a8c1f98d280262478cccc65708bb1066a72e0708dccaaf75)\nThis malicious package is part the IronWorm campaign. This campaign executes a malicious binary payload during installation via a preinstall hook. The payload is a Rust-built infostealer that targets developer environments, scanning for and harvesting credentials related to cloud providers, object storage, databases, source-control, package registries, and AI developer tools. It also targets cryptocurrency wallets, specifically injecting a malicious JavaScript hook into the Exodus desktop wallet to capture passwords and recovery phrases. Furthermore, the malware exhibits worm-like behavior by stealing GitHub and NPM credentials to push malicious updates to the victim's repositories and publish trojanized packages, and it uses an eBPF-based kernel rootkit to hide its processes and network connections on Linux systems.\n","modified":"2026-06-05T01:46:51.487793331Z","published":"2026-05-13T00:00:00Z","database_specific":{"malicious-packages-origins":[{"versions":["2.98.3"],"source":"google-open-source-security","sha256":"d83c3b506a10b770a8c1f98d280262478cccc65708bb1066a72e0708dccaaf75","import_time":"2026-06-05T00:24:25.065752Z","modified_time":"2026-06-04T22:28:51.769005667Z"}]},"references":[{"type":"ARTICLE","url":"http://www.ox.security/blog/ironworm-supply-chain-malware-hits-npm/"},{"type":"ARTICLE","url":"https://research.jfrog.com/post/iron-worm-shai-hulud-rustier-cousin/"}],"affected":[{"package":{"name":"supabase-javascript","ecosystem":"npm","purl":"pkg:npm/supabase-javascript"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"}]}],"versions":["2.98.3"],"database_specific":{"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/supabase-javascript/MAL-2026-3652.json"}}],"schema_version":"1.7.5","credits":[{"name":"SafeDep","contact":["https://safedep.io"],"type":"FINDER"}]}