{"answers":{"affected":"1 open source package ship an affected version, including secretkey2fa.","exploited":"There is no known exploitation of MAL-2026-15559 in the wild and no public exploit code.","fix":"Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.","what":"MAL-2026-15559 is a malicious package in secretkey2fa, published on 29 Aug 2026."},"fix_prompt":"MAL-2026-15559 is a malicious package: secretkey2fa (npm). Every version was published to cause harm.\n\nTask:\n1. Search this repository's dependency manifests and lockfiles for the package, including transitive dependencies.\n2. If it is present, remove it, regenerate the lockfile with the project's package manager, and replace whatever it was used for.\n3. List any CI runners, developer machines or containers that installed it, so their secrets can be rotated.\n4. If the package is not used anywhere, say so and change nothing.\n\nReference: https://insights.sbomify.com/MAL-2026-15559/ (Markdown: https://insights.sbomify.com/MAL-2026-15559/index.md)","id":"MAL-2026-15559","markdown":"https://insights.sbomify.com/MAL-2026-15559/index.md","name":"MAL-2026-15559","record":{"aliases":[],"analysis":null,"analysis_generated_by":null,"assigner":null,"cpe":[],"cvss":{"score":null,"severity":null,"source":null,"vector":null,"version":null},"cwes":[],"description":"Package is advertised as a lightweight TOTP/HOTP library, but its package.json declares a postinstall hook (`node lib/core.js`) that runs a Windows credential stealer on install. The payload enumerates Windows Credential Manager entries matching `MCL|*|Xal*` via inline P/Invoke PowerShell (CredEnumerate/CredRead), reads launcher account JSON files under %APPDATA%\\.minecraft\\launcher_accounts*.json, extracts Microsoft Account refresh tokens (regex `M.C...`) and access tokens, and exchanges them at login.live.com/oauth20_token.srf, Xbox Live, and minecraftservices endpoints to obtain session identifiers. It also builds a Chromium DPAPI decryption chain (PowerShell `[System.Security.Cryptography.ProtectedData]::Unprotect` against `os_crypt.encrypted_key` from Chrome's Local State, plus an AES-256-GCM decipher) to decrypt browser cookie/credential blobs. Harvested data is posted as JSON and multipart file uploads to a hardcoded Discord webhook whose URL is concealed as an XOR-0x3F byte array (`_W`) decoded at runtime along with other sensitive strings (`powershell`, `child_process`, `ProtectedData`, discord user-agent). An `_env()` gate short-circuits on CI, during `npm audit`/`npm pack`, when %APPDATA%/USERPROFILE/USERNAME/COMPUTERNAME are missing, or when `~/Documents` is absent, so the payload only fires on real Windows developer hosts. The 2FA description is a cover story.","ecosystems":["npm"],"exploits":{"exploitdb":null,"first_seen":null,"github_poc":null,"max_poc_stars":null,"metasploit":null,"nuclei":null,"refs":[],"tier":null},"has_fix":false,"headline":"Malicious code in secretkey2fa (npm)","id":"MAL-2026-15559","indexable":true,"kev":null,"kind":"malicious","links":{"ecosystem":"npm","product":null,"products":[],"type":null,"year":"2026"},"n_packages":1,"n_references":null,"packages":[{"ecosystem":"npm","fixed":[],"introduced":[],"last_affected":[],"package":"secretkey2fa","purl":"pkg:npm/secretkey2fa","source":"MAL-2026-15559"}],"products":null,"published":"2026-08-29","related":[],"sources":[{"class":"attribution","licence":"Apache-2.0","name":"OpenSSF Malicious Packages","prefix":"MAL"}],"ssvc":{"automatable":null,"exploitation":null,"technical_impact":null},"state":null,"updated":null,"vendors":null},"summary":null,"url":"https://insights.sbomify.com/MAL-2026-15559/"}