Sonatype Research Labs says the PolinRider loader is back, hidden inside 10 hijacked npm packages. The research team found 12 malicious releases on 4 November 2026 and tracks the case as sonatype-2026-010515.
The affected packages cover ordinary developer tasks, from Redux state management to health-check APIs and browser activity tracking. Each one also carries a hidden loader that the package’s normal install process never triggers.
How the PolinRider Loader Finds Its Payload Server
Sonatype says all 12 releases use the same method to find a remote payload server. A hidden script reads a transaction sent from one hard-coded Ethereum wallet, then treats parts of the destination address as an IP address.
From that address, the loader fetches XOR-encoded JavaScript over plain HTTP, then runs the decoded code inside the application process and inside a separate, detached Node process. Six releases hide this loader with Base64 encoding; six use a character-permutation routine and the JavaScript Function constructor instead. Sonatype says the decoded loader body in those six releases is identical.
None of the 12 releases needs an npm install or postinstall script to run. Sonatype says the code can execute as soon as an application loads the affected module, or, in one package, as soon as the bundled service starts.
Sonatype says the same Ethereum wallet and server pattern already appeared in an external researcher’s report on a related campaign in late October 2026. That report tied the same resolver wallet to PolinRider loaders found in compromised GitHub repositories, using a matching pair of retrieval paths and port.
Which npm Packages Carry the PolinRider Loader?
Sonatype published the full list of affected packages and releases. Treat every version in the table below as compromised.
| Package | Affected releases | Loader type |
|---|---|---|
| @adminide-stack/client-redux | 0.0.16-18 | Base64-wrapped |
| @adminide-stack/health-api-server | 0.0.18-alpha.465 | Base64-wrapped |
| @adminide-stack/user-activity-browser | 1.1.3-alpha.114 | Base64-wrapped |
| @adminide-stack/utils | 0.0.16-129, 0.0.16-130 | Base64-wrapped (129), permutation bootstrap (130) |
| server-hemera-mongo | 0.0.15, 0.0.16 | Base64-wrapped |
| cdeops | 13.5.31 | Permutation bootstrap |
| @adminide-stack/forms-core | 5.1.9-alpha.3 | Permutation bootstrap |
| @adminide-stack/yantra-help-browser | 12.0.194 | Permutation bootstrap |
| @cdmbase/wiki-browser | 12.0.18-alpha.53 | Permutation bootstrap |
| @pubngo-stack/help-browser | 12.0.23-alpha.3 | Permutation bootstrap |
Sonatype says a lockfile entry alone does not prove the loader ran, and an import error does not prove it did not run either. The import can fail after the hidden code already executed.
What Should Developers Do Now?
Sonatype lists five checks for any team that uses one of these packages. The order below matches how fast each check closes exposure.
- Find affected versionsCheck direct and transitive dependencies, lockfiles, internal npm mirrors, and build records against the table above.
- Check repository protectionsSee whether your package manager or dependency firewall already blocked these releases, and block all ten going forward.
- Remove the dependencyReplace affected versions in every project, clear them from internal mirrors and caches, and move to independently verified clean releases.
- Determine whether the code ranCheck which file your application actually loaded, and correlate that with process and network activity on the host.
- Rotate exposed credentialsIf the code ran, treat the host as compromised and rotate publishing credentials, source repository access, cloud keys, and CI secrets.
This is the same hijacked-package pattern behind the TanStack npm worm and other recent supply-chain incidents. A trusted package starts running code that its own source never shows in a diff. For background on this attack class, see what counts as a malicious package and the software supply chain compromise technique.
Frequently Asked Questions
What is the PolinRider loader?
Sonatype links it to an earlier campaign of the same name. It uses Ethereum transactions to find a remote payload server, then runs the downloaded JavaScript.
How many npm packages does this affect?
Sonatype found 12 malicious releases across 10 hijacked npm packages, including the adminide-stack and cdmbase scopes, cdeops, and server-hemera-mongo.
Do I need to run npm install to be affected?
No. Sonatype says none of the 12 releases uses an install or postinstall script; the hidden code can run as soon as an application loads the affected file.
What should I do if one of these packages ran in my environment?
Sonatype recommends treating the host as compromised, checking process and network activity, and rotating publishing credentials, repository access, cloud keys, and CI secrets.
