Malicious code in classbreeze-utils (npm)
-= Per source details. Do not edit below this line.=-
classbreeze-utils ships a heavily obfuscated dropper appended to a copied @tailwindcss/typography plugin in src/index.js. On require(), a setTimeout fires a function that decodes an RC4-encrypted string array to construct an OS-specific remote URL (branching on win32/darwin/linux and reading %APPDATA% on Windows), fetches a binary via fetch(), writes it under os.homedir() (or %APPDATA%/Microsoft) with mode 0o700, then launches it via child_process.spawn with detached:true and stdio ignored. The package name is unrelated to Tailwind, but README.md is copied verbatim from @tailwindcss/typography (including 'tailwindTYPOGRAPHY Style' and install instructions rewritten to 'npm install -D classbreeze-utils' / '@plugin "classbreeze-utils"'), so developers following copy-pasted Tailwind setup snippets can be tricked into installing it. The string-array obfuscation (shuffler with while(!![]) + push/shift on parseInt match, base64+URI+RC4 decoders) hides the module names ('fs','path','child_process'), OS detection branches, the download URL, and the dropped-file path. No version pinning, no signature verification, executable bit set, detached process — a textbook generic-binary dropper running at module load.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도(기본값(정보 없음)) | 55.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 55.00 |
VPI 공식 vpi-v1 기준