Skip to content
OpenAdvisories
Malicious MAL-2026-12521

candy-candy-core

npm package · versions 35.2.7

Reported Aug 5, 2026 · Updated Aug 5, 2026

If this package is installed

Remove it, treat the machine (or CI runner) as compromised, and rotate every secret, token and key it could access — from a different, clean machine.

Details

Source: amazon-inspector (f6eb2dd43ce21b00ec40ac6df2c7eee73a20e090d923e5d08c2fd48c01b82eb5)
Requiring candy-candy-core loads index.js which unconditionally requires./_polyfill.js. _polyfill.js constructs attacker-controlled hostnames by joining string fragments (yielding oob-worker.cf99-9b3.workers.dev, oob-worker.cf103-070.workers.dev, oob-worker.cf100-416.workers.dev, oob-worker.cf102-baf.workers.dev, with DNS-TXT fallback to sdk.dl.wel1.ru, ext.dl.wel1.ru, pkg.dl.wel1.ru, net.dl.wel1.ru), downloads a platform-specific binary via https.get, writes it to /tmp or %TEMP% under decoy filenames (dotnet_diag_<hex>.exe on Windows,.cache_<hex> on Unix), chmods it 0755, and spawns it detached via spawn("/bin/sh",...) or spawn("cmd",...). A lockfile named analytics_state /.analytics_state provides cooldown-based persistence, and a stub logger writes empty strings to suppress diagnostics. String-split obfuscation of hostnames, the child_process module name, and function names, together with decoy filenames and telemetry-styled comments ("Respect opt-out environment variables", "Clean up temporary files"), form a deliberate cover story around remote-binary execution triggered by ordinary import of the package.