Skip to content
OpenAdvisories
Malicious MAL-2026-12331

@wololasod/tiny-id

npm package · versions 0.1.1, 0.1.3, 0.1.0, 0.1.2

Reported Aug 5, 2026 · Updated Aug 15, 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 (5b3ca8617b237bb3d8fd7d14aa18554118397e7b7faaea2e87cdd8433fef7a8f)
The package advertises itself as a tiny ID generator but its main entry dist/index.cjs contains an obfuscator.io + RC4 string-array VM that, on require/import, resolves a platform-specific configuration (win32/linux), downloads a remote executable over https to a temp/APPDATA path, and executes it via child_process.spawn (VBS launcher on Windows, direct spawn on Linux), then deletes the staged file. Staging filename observed: 'nupkg_system.diagnostics.performancecounter.8.0.0.py'. The loader additionally re-launches itself via spawn(process.execPath, [__filename], {detached:true, stdio:'ignore', windowsHide:true, env:{...process.env, RUN_PAYLOAD:...}}) and unrefs the child, producing a hidden, detached process that survives the parent. The loader includes obfuscator.io anti-analysis features: RC4-decoded string array, hex-named identifiers, eval.toString()/Function.prototype.bind.toString() '[native code]' integrity checks, and a djb2 caller-hash gate ('_$h!== 0x74F28336') that crashes if the code is reformatted. The same obfuscated dropper is also shipped in dist/index.d.ts, which is declared as the TypeScript types entry — a.d.ts file should contain pure type declarations, not executable code. None of this behavior relates to ID generation.