What happened
Sonatype's research team reports hidden runtime loaders in 12 npm releases spread over 10 packages it describes as hijacked. The packages do unrelated jobs, including Redux integration, health APIs, browser activity tracking, utilities and server examples. Sonatype tracks the finding as sonatype-2026-010515. GitHub's advisory database has separately listed @adminide-stack/yantra-help-browser 12.0.194, one of the releases Sonatype names, as malware with no patched version. GitHub's entry says any computer that has had the package installed or running should be considered fully compromised.
According to Sonatype, each loader looks up transactions sent by a fixed Ethereum wallet, turns them into server IP addresses, and then downloads, XOR-decodes and executes JavaScript. Because the wallet acts as a dead drop, the operator can steer the loader to a new server with one more transaction, so blocking a single server does not stop it. The served JavaScript can also change without any new npm release.
The packages declare no install or postinstall hooks; Sonatype says the code can start whenever an affected entrypoint loads, or when the server-hemera-mongo application boots. Sonatype notes that turning off npm install scripts does not protect against this. It ties the releases to earlier PolinRider activity through the shared wallet, but says this does not prove PolinRider and GhostAction have the same operator.
Timeline
Who is affected
Any developer machine, CI worker, build host or deployed service where the affected package code ran.
How to check
- Search direct and transitive dependencies, lockfiles, internal npm mirrors and build records for the listed versions.
- Look for detached node -i processes started by another Node process with piped input, and plain HTTP requests on port 443 to /0x/cls or /0x/ls.
- Sonatype warns that a lockfile entry does not prove the code ran, and an import error does not prove it did not.
What to do
- Replace the affected versions and stop internal mirrors and caches from serving them.
- If the code ran, treat the host as compromised and examine its processes, network activity and reachable credentials.
- Rotate credentials that may have been exposed, including publishing tokens, repository access, cloud keys and CI secrets.
- From a different computer, rotate the secrets and keys stored on any machine where @adminide-stack/yantra-help-browser was installed or running.
Affected packages
The package versions named in this report.
| Ecosystem | Package | Versions |
|---|---|---|
| npm | @adminide-stack/client-redux | 0.0.16-18 |
| npm | @adminide-stack/health-api-server | 0.0.18-alpha.465 |
| npm | @adminide-stack/user-activity-browser | 1.1.3-alpha.114 |
| npm | @adminide-stack/utils | 0.0.16-1290.0.16-130 |
| npm | server-hemera-mongo | 0.0.150.0.16 |
| npm | cdeops | 13.5.31 |
| npm | @adminide-stack/forms-core | 5.1.9-alpha.3 |
| npm | @adminide-stack/yantra-help-browser | 12.0.194 |
| npm | @cdmbase/wiki-browser | 12.0.18-alpha.53 |
| npm | @pubngo-stack/help-browser | 12.0.23-alpha.3 |
Indicators of compromise
Shown defanged so they can't be clicked. Copy copies the real value. Every indicator appears in the cited source.
| Type | Indicator | Note | Copy |
|---|---|---|---|
| Wallet | 0x1eef0849eda15d87f64e51c73c8442cf3c8bcef3 | hard-coded Ethereum sender wallet the loader uses as a dead-drop resolver[1] | |
| IP address | 95[.]135[.]181[.]151 | C2 address advertised by the wallet, as reported by Greenflagged on November 3[1] |
Sources
- GitHub Advisory Database · Malware in @adminide-stack/yantra-help-browser
Changelog
- First published.
- Upgraded from a brief to a full headline. Added GitHub's malware advisory for @adminide-stack/yantra-help-browser 12.0.194 as a second source. Added 1 source.
- Added Subcloak incident pack CW-2026-10030, which Watch matches on your Mac.