VYPR

npm · Malicious package advisory

Malware

secretkey2fa

GHSA-wrp2-cvjj-h5jx

Malicious code in secretkey2fa (npm)

Details

**Severity:** Critical

**Affected versions:** `= 1.0.1`

## Source: amazon-inspector (e1da4c2863f6f6fb95a1ab802243bfde5e04a71e4aa6f0b41f940502d58f501a)
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.

---

Credit: [OpenSSF](https://github.com/ossf/malicious-packages) ([source](https://github.com/ossf/malicious-packages/blob/e4956292c0cf024519ebae88e8b315a0af37a829/osv/malicious/npm/secretkey2fa/MAL-2026-15559.json))

**References:**
- https://github.com/ossf/malicious-packages/blob/e4956292c0cf024519ebae88e8b315a0af37a829/osv/malicious/npm/secretkey2fa/MAL-2026-15559.json
- https://www.npmjs.com/package/secretkey2fa/v/1.0.1
- https://github.com/advisories/GHSA-wrp2-cvjj-h5jx

Compromised versions (1)

  • = 1.0.1

Any computer that installed or ran a compromised version should be considered fully compromised. Rotate every secret on that machine from a clean environment.