Jscrambler npm-пакет скомпрометовано: перевірте п’ять версій

П’ять шкідливих версій Jscrambler npm запускали кросплатформний інфостілер. Перевірте lockfiles, persistence, сесії та доступні секрети.

П’ять шкідливих версій Jscrambler npm для перевірки

11 липня 2026 року п’ять версій офіційного npm-пакета jscrambler вийшли з кросплатформним інфостілером. SafeDep відносить до шкідливих версії 8.14.0, 8.16.0, 8.17.0, 8.18.0 і 8.20.0. Поточна чиста гілка — 8.22.0, але оновлення не скасовує крадіжку облікових даних, якщо уражена версія вже запускалася [1] [2].

Ключова відмінність — спосіб запуску. Перші три шкідливі релізи використовували npm lifecycle hook preinstall. У версіях 8.18.0 і 8.20.0 той самий dropper перенесли у звичайний код пакета, тому імпорт модуля або запуск CLI міг активувати його навіть за вимкнених install scripts [2].

Які версії Jscrambler уражені?

ВерсіяСтатусТригер
8.14.0Шкідливаpreinstall hook
8.15.0Чиста за аналізомDropper не знайдено
8.16.0Шкідливаpreinstall hook
8.17.0Шкідливаpreinstall hook
8.18.0ШкідливаЗвичайний runtime-код
8.20.0ШкідливаЗвичайний runtime-код
8.22.0+Поточна безпечна гілкаОновіть і звірте advisory

У власному advisory Jscrambler зараз перелічує 8.14, 8.16, 8.17 і 8.20 як уражені, а 8.22+ — як безпечні [1]. SafeDep також класифікує 8.18.0 як шкідливу, оскільки dropper перенесли у runtime path [2]. Розслідування виробника триває, тому варто стежити за оновленнями advisory.

Як npm-пакет запускав інфостілер

StepSecurity встановила, що розмір пакета зріс приблизно з 38 КБ до 7,9 МБ. Файл dist/intro.js не був звичайним JavaScript: це контейнер із виконуваними файлами для Linux, Windows і macOS. Loader вибирав payload для поточної ОС, розпаковував його у випадково названий прихований файл у системній temp-директорії та запускав як відокремлений процес [3].

Статичний аналіз вказує на крадіжку даних профілів Chrome, Edge, Brave, Chromium і Firefox, даних розширення Bitwarden, Steam sessions та матеріалів криптогаманців. Windows-версія може створювати приховане завдання Task Scheduler, а macOS-версія — LaunchAgent. Дослідники також бачили прямі з’єднання з IP-адресами атакувальника та Tor infrastructure [2] [3].

Як перевірити workstation або CI runner

  1. Перегляньте lockfiles і build records. Шукайте всі п’ять версій у package-lock.json, npm-shrinkwrap.json, yarn.lock, pnpm-lock.yaml, container build logs, CI logs і локальній npm history.
  2. Розділіть install і runtime exposure. Для 8.14.0, 8.16.0 або 8.17.0 достатньо встановлення на клієнті, який виконував lifecycle scripts. Для 8.18.0 та 8.20.0 перевірте також імпорт пакета або запуск CLI.
  3. Знайдіть payload container. Підозрілий node_modules/jscrambler/dist/intro.js розміром близько 7 837 238 байтів є сильним індикатором. У temp-директоріях шукайте випадково названі приховані executables, створені в той самий час.
  4. Перевірте persistence та egress. У Windows перегляньте Task Scheduler, у macOS — ~/Library/LaunchAgents. Шукайте 37.27.122[.]124, 57.128.246[.]79, check.torproject[.]org і archive.torproject[.]org у мережевих логах.

Що робити після запуску шкідливої версії

  1. Ізолюйте workstation або runner і збережіть install, process та network timeline.
  2. Перейдіть на 8.22.0 або новішу версію, приберіть уражену залежність із lockfiles та очистьте package-manager і build caches.
  3. З чистого пристрою відкличте browser sessions і замініть GitHub, npm, cloud, signing, SSH, AI-tool, MCP та CI secrets, доступні процесу.
  4. Перемістіть криптовалюту з гаманців, якими користувалися на ураженому хості, у новий гаманець, створений на чистому пристрої.
  5. Перебудуйте CI runner із довіреного образу. На workstation приберіть persistence після збору доказів і виконайте повне сканування.

Видалення node_modules не прибирає відокремлений payload або завдання Task Scheduler. На ураженому Windows-комп’ютері після dependency cleanup скористайтеся Gridinsoft Anti-Malware, щоб перевірити dropped executable, persistence та інші залишки malware. Сканування не повертає викрадені credentials, тому ротація токенів і сесій залишається обов’язковою.

Індикатори, які варто зберегти

  • dist/intro.js SHA-256: a41a523ef9517aab37ed6eea0ec881821bdcb7aefcb5c5f603adc7907f868c86
  • Windows payload SHA-256: b7ca95d1b23c8e67416a25cedf741de0917c2096bbc9d24649eea7853d054903
  • Linux payload SHA-256: fbbcf4d8f98168f78f5c0c47a9ae56d59ec8ac84a7c9ca6b797fedfb8d62d2bd
  • macOS payload SHA-256: c8fd47d36bdf7c825378593ab82ed8c24d1dc52e26b507812393e24e1d5201fd

Цей інцидент вужчий за мультиекосистемну кампанію TrapDoor проти npm, PyPI і Crates.io, але порядок реагування схожий: перевірка lockfile — лише перший крок. Хвиля Shai-Hulud проти AntV npm також показує, чому CI secrets та developer workstations потребують host-level triage.

Джерела

  1. Jscrambler. “Security Advisory: Unauthorized Publication of a Malicious npm Package affecting the product Code Integrity.” Jscrambler, 11 липня 2026 року, дата доступу 11 липня 2026 року. https://jscrambler.com/blog/security-advisory-malicious-npm-package
  2. SafeDep Team. “Official jscrambler npm Package Compromised Across Multiple Releases.” SafeDep, 11 липня 2026 року, дата доступу 11 липня 2026 року. https://safedep.io/jscrambler-npm-supply-chain-compromise/
  3. Rohan Prabhu. “jscrambler npm package publishes malicious preinstall binary.” StepSecurity, 11 липня 2026 року, дата доступу 11 липня 2026 року. https://www.stepsecurity.io/blog/jscrambler-npm-package-publishes-malicious-preinstall-binary

Пишу про те, як зробити життя онлайн комфортним і безпечним. Вірю, що сучасний цифровий світ вартий того, щоб бути його частиною.