Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
Part of a larger attack: @ornikar published 42 malicious packages. See the full campaign →
Malicious package

@ornikar/monorepo-confignpm

@ornikar/monorepo-config is a confirmed malicious npm package (MAL-2026-11764) that steals credentials and exfiltrates sensitive data (malicious versions 14.3.2, 14.3.3, 14.3.4…). Do not install it — remove it immediately and rotate any exposed credentials.

Malicious code in @ornikar/monorepo-config (npm)

MAL-2026-11764
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
npm uninstall @ornikar/monorepo-config

What this malware does

npm/@ornikar/monorepo-config is affected by the large-scale, self-propagating npm supply-chain worm of 2026-08-04 (the "Shai-Hulud: Here We Go Again" wave) — the same campaign that began with the compromise of the keyv and cacheable maintainer account. The listed version(s) were trojanized and republished by the worm after it reached an npm publish token belonging to a maintainer in this namespace; the payload enumerates every package a stolen token controls and republishes each with the same hook, so many packages under this scope were poisoned in the same short window. Every poisoned release adds a preinstall hook ("preinstall": "node setup.mjs") that runs on a bare npm install, before any project code. setup.mjs downloads a standalone Bun runtime and runs a byte-identical, heavily obfuscated ~728 KB second-stage credential stealer (shipped as Math_Symbol.js / math_init.js). It harvests GitHub, npm, AWS, GCP, Azure, HashiCorp Vault and Kubernetes credentials plus generic secrets and private keys (TruffleHog-style sweep), reads CI/CD secrets and identifies build runners, then republishes further packages the stolen token can reach. Rather than a fixed command-and-control host, it exfiltrates stolen findings to attacker-created GitHub repositories (descriptions reading "Shai-Hulud: Here We Go Again") and over DNS. Treat any environment that installed an affected version (with install scripts enabled) as compromised: rotate and revoke all reachable credentials (npm and GitHub tokens, cloud keys, Vault/Kubernetes secrets, and CI org/repo secrets). Part of the August 2026 npm worm that poisoned 400+ packages across many organizations.

package.json declares scripts.preinstall = 'node setup.mjs', which auto-runs on npm install. setup.mjs is itself obfuscator.io-style renamed (identifiers like _0x488df8, _0x52943e; indirect string-property call wrappers) and implements a dropper: it detects the host platform, builds a URL against github.com/oven-sh/bun/releases (bun-v1.3.13), downloads the Bun runtime zip via https, extracts the bun binary to a temp path, chmods it +x, and execFileSyncs it against the sibling file math_init.js. math_init.js is a 727KB Bun-CJS bundle (// @bun @bun-cjs header) with heavy obfuscation: single-letter/hex variable names, a large rotated string/number literal array, and a WV8StW(arr, n) rotation function that repeatedly performs arr.push(arr.shift()) to reorder the decoder table, alongside an hc1jfK9 string decoder. The filename 'math_init' is unrelated to the package's declared monorepo-configuration purpose and to any exported code path. Executing the payload through a freshly-downloaded alternate runtime bypasses Node-based install-time scanners and hides the payload's real behavior behind runtime-swap plus source obfuscation. This matches the alternate-runtime dropper pattern: install-time fetch of an alien runtime to execute an unrelated, obfuscated, package-shipped blob whose contents cannot be reviewed as source.

Any computer that has this package installed or running should be considered fully compromised. All secrets and keys stored on that computer should be rotated immediately from a different computer. The package should be removed, but as full control of the computer may have been given to an outside entity, there is no guarantee that removing the package will remove all malicious software resulting from installing it.

Malicious versions

12 flagged
14.3.214.3.314.3.414.3.514.3.614.3.714.3.814.3.914.3.1014.3.1114.3.1214.3.13

Indicators of compromise (SHA-256)

e11b6b56ad0788f5777117132d6a3f68a644a19be6b5cdee20584fd4a9d8be23
3cdfc2a00a733b0a2a37686253320a4ae4a63cbc2259321a2099d5389255604d
a92c2e361e571ba35f3d9c632b2155f7ab06d0eea752dc1f4edfd4cda6c2a40b
b386b8d00f9ff43563263413e05d9ba189a918e20183253082efb78d7570e94a
159dd38a6408be53c25aee150aadf22f03da617a4d28f99ee1e64f8a7391483a
58254ab2da40d7696b7462c9b22443e2e52b1cc4e577e179dfdffe2cd46806f2
935cbe1bea5f71dd74ae1db87577e4e0418d3a9c0b9b11734dcd19f6e38947d0
cc4bb1a94850b628e12664a4dfd36d420321a09731ba39411e5b1db59e1914cb
df507cea79384720719e8feb119be4a4f082c96cdcf6d6a8617b93058bcd121f
ef62c86a2e1c9078048f8459fc260c75c94f2596a57a58f01a6b2a9a4ba0a101
113fd29342f0468a47a09622ac280149357bc1c24d1cccc5c53be3d3163bfde5
261e49474d59068acd827201fb4bdb6cba4c6884262c07aaebb95d67bd74e5fe
39da0ac6b817dc4c413f51ee1b53669e7c7fa3a621d6d7d23bb16ef06eb50e48

Detection & response playbook

Credential / info stealer
  1. Find it

    Scan your lockfiles (package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock, etc.) and build artifacts for @ornikar/monorepo-config (12 malicious versions). O3 Security's supply-chain scanner checks every dependency against known-malicious package intelligence at install time and in CI, flagging @ornikar/monorepo-config across your stack and pipelines.

  2. If you installed it — respond

    @ornikar/monorepo-config is built to steal secrets, so assume every credential the build or runtime could read is compromised. Remove it from your project and lockfile, then rotate ALL exposed secrets — npm/registry tokens, cloud keys, CI/CD secrets, SSH keys, and any .env values — from a known-clean machine. Audit logs for unauthorized use of those credentials.

  3. Did it already run?

    If @ornikar/monorepo-config was ever installed, its post-install/runtime payload may have already executed. O3's L7 egress monitoring and runtime eBPF sensors detect the credential exfiltration or command-and-control callback after install and block the malicious outbound channel, so you catch and contain the actual compromise — not just the presence of the package.

  4. How O3 protects you

    O3 blocks @ornikar/monorepo-config before install through its supply-chain scanner, and if it has already run, detects and severs the exfiltration or C2 callback at runtime through L7 egress monitoring and eBPF.

Frequently asked questions

No. @ornikar/monorepo-config on npm has been identified as a malicious package (versions 14.3.2, 14.3.3, 14.3.4, 14.3.5, 14.3.6, 14.3.7, 14.3.8, 14.3.9, and 4 more flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

GHSA-5vpq-rqxx-fpwmIN-MAL-2026-011891IN-MAL-2026-011888IN-MAL-2026-011740IN-MAL-2026-011889IN-MAL-2026-011667IN-MAL-2026-011890IN-MAL-2026-011691IN-MAL-2026-011736IN-MAL-2026-011892IN-MAL-2026-011747IN-MAL-2026-011896IN-MAL-2026-011893

References

Credits

  • Aikido Security · finder
  • Amazon Inspector · finder
  • SafeDep · finder
  • Socket Threat Research Team · finder

Detect & block this

O3 blocks @ornikar/monorepo-config-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the credential exfiltration and severs the channel.

Explore

@ornikar/monorepo-config (npm) malicious package — MAL-2026-11764 | O3 Security