MAL-2026-17864

    Dashboard / Malicious Package / MAL-2026-17864

    MAL-2026-17864

    Published: 10 Oct 2026Last Modified: 29 Oct 2026

    Summary: Malicious code in passwordcracker (npm)

    Details: passwordcracker poses as a dependency-free Discord MFA library but pulls node-net-pool from the attacker's GitHub repo lunexindonesia/node-net-pool, and on load lib/cache.js runs `try{module['require']('node-net-pool')}catch(_){}` to execute it. On Windows, that index.js downloads a script from a limbomail.com attachment URL, saves it as a hidden winsvc.js under %APPDATA%, %LOCALAPPDATA% or %TEMP%, runs it via a hidden WinSvcHost.vbs, persists through HKCU Run/RunOnce, UserInitMprLogonScript and a Startup shortcut, and re-checks for updates every two hours. Amazon Inspector reported the same loader stub in discord-mfa-solver (MAL-2026-16100). The npm account kingsize published passwordcracker and passwordcrackv2 with identical code on 2026-10-09 and 2026-10-10. Source: amazon-inspector (b3aa1deb3b0d3ec4ce0e4694f806b9887b286764b96f177bc41deec309b9ddc3) package.json at line 41 declares the sole runtime dependency `node-net-pool` as an off-registry HTTPS tarball pointing at the `main` branch of https://github.com/trktgq0wbre1/node-net-pool/archive/refs/heads/main.tar.gz, with no version pin, no commit SHA, and no integrity hash. On `npm install`, npm fetches whatever that mutable branch currently contains and installs it, running any lifecycle scripts inside the resulting package. The GitHub account hosting the tarball is unrelated to any established publisher, and the shipped source references pool functionality that is not implemented locally, so the external tarball supplies code that this package depends on at runtime. The package also ships an index.js that targets Discord's `/api/v9/mfa/finish` and vanity-url endpoints with caller-supplied token and password values and disables TLS verification against discord.com, canary.discord.com, and ptb.discord.com — an offensive tool operating on operator-supplied credentials rather than installer-owned data, which does not by itself attack the installer but confirms the package's hostile posture.

    Affected packages

    Package

    Name: passwordcracker

    Purl: pkg:npm/passwordcracker

    Affected ranges

    Type: SEMVER

    Events:

    Introduced- 0
    Fixed -None

    Affected versions

    1.1.1