Пакет npm Jscrambler скомпрометирован: Rust Infostealer нацелен на учетные данные разработчиков и инструменты искусственного интеллекта.

Последнее обновление: 07/13/2026
  • Вредоносная версия jscrambler (8.14.0) была опубликована на npm с использованием украденных учетных данных и содержит скрытый хук preinstall, который внедряет кроссплатформенный информационный шпион Rust.
  • Эта программа-воровка нацелена на облачные учетные данные, криптокошельки, менеджеры паролей, конфигурации инструментов для программирования ИИ и приложения для обмена сообщениями, а также включает в себя возможности на уровне ядра Linux.
  • Злоумышленник за три часа распространил пять вредоносных версий, причем в более поздних версиях обходили параметр --ignore-scripts, внедряя загрузчик в основной код.
  • Jscrambler выпустил чистую версию (8.22.0) и рекомендует пользователям менять все открытые учетные данные и проводить аудит своих систем.

Иллюстрация атаки на цепочку поставок с использованием Jscrambler npm

11 июля 2026 года npm-пакет Jscrambler, известного поставщика решений для обфускации и безопасности JavaScript, подвергся атаке на цепочку поставок, которая вышла далеко за рамки простого внедрения кода. Злоумышленник использовал украденные учетные данные для публикации в npm , чтобы распространить версию 8.14.0, которая содержала пре-инсталляционный хук, незаметно устанавливавший и запускавший нативный исполняемый файл на компьютере жертвы. Socket.dev обнаружил вредоносный релиз всего через шесть минут после его появления в реестре, но к тому времени ущерб уже был нанесен всем, кто установил его в течение этого периода.

Взлом пакета не был единичным случаем. В течение следующих трех часов тот же злоумышленник распространил еще четыре вредоносные версии — 8.16.0, 8.17.0, 8.18.0 и 8.20.0 — каждая из которых содержала тот же кроссплатформенный информационный вредоносный код для Rust . Атака использовала фундаментальное доверие к экосистеме npm, где одна скомпрометированная учетная запись может превратить легитимный инструмент разработки в оружие, направленное против тех самых разработчиков, которые на него полагаются.

Атака: кража учетных данных и скрытая полезная нагрузка

В версии 8.14.0 были добавлены два новых файла, отсутствовавших в предыдущем чистом релизе, 8.13.0: dist/setup.js и dist/intro.js . Несмотря на своё название, intro.js представлял собой не JavaScript, а контейнер размером примерно 7.8 МБ, содержащий три сжатых gzip нативных бинарных файла — по одному для Linux x86-64, Windows x86-64 и macOS arm64. Во время установки setup.js определял хостовую операционную систему, записывал соответствующий бинарный файл в случайно названный файл во временном каталоге системы, помечал его как исполняемый и запускал с скрытым выводом. Затем полезная нагрузка запускалась с теми же привилегиями, что и процесс установки, который на машине разработчика или в среде CI часто включает доступ к конфиденциальным учетным данным и токенам.

Позже Jscrambler подтвердил, что злоумышленник скомпрометировал учетные данные для публикации в npm и использовал их для обхода обычного процесса выпуска проекта. В общедоступном репозитории GitHub не было соответствующего коммита, тега или запроса на слияние для версии 8.14.0. Версия была отправлена ​​напрямую в npm, указывая на взломанную учетную запись или конвейер сборки. Компания отозвала учетные данные, сменила секреты и усилила защиту своего конвейера публикации, но вредоносные версии остались в npm — устаревшие, но по-прежнему устанавливаемые с использованием той же версии.

На что нацеливается вор

Созданный на Rust инструмент для кражи информации разработан с учетом широкого списка целей, ориентированных на разработчиков. Согласно анализам Socket, StepSecurity и JFrog, он ищет учетные данные облачных сервисов AWS, Azure и Google Cloud , включая метаданные, используемые средствами CI. Он также ищет криптовалютные кошельки и сид-фразы в MetaMask, Phantom, Exodus, TrustWallet и Coinbase Wallet, а также в хранилище паролей Bitwarden. Пароли и cookie, хранящиеся в браузере, а также сессии из Discord, Slack, Telegram и Steam, также находятся в поле зрения злоумышленников.

Отличительной особенностью этого вредоносного ПО является его ориентация на инструменты для программирования ИИ . Он нацелен на конфигурационные файлы Claude Desktop, Cursor, Windsurf, VS Code и Zed, где часто хранятся ключи API и учетные данные сервера Model Context Protocol (MCP). Анализ JFrog также показал, что вредоносное ПО использует файлы конфигурации VPN, ключи скрытых сервисов Tor и даже папки установки таких фреймворков для тестирования на проникновение, как Metasploit, Sliver и Havoc, что говорит о том, что злоумышленники целенаправленно атаковали исследователей безопасности и специалистов по тестированию на проникновение.

Эволюция кампании и тактика уклонения

Злоумышленник не остановился на первоначальном механизме предварительной установки. Начиная с версии 8.18.0, метод доставки изменился: дроппер был перемещен в основной код пакета и точки входа CLI, поэтому он срабатывал при импорте или запуске пакета, а не во время установки. Это изменение обошло защиту npm install –ignore-scripts, на которую полагаются многие разработчики, а также обошло сканеры, которые проверяют только скрипты установки. В более поздних версиях также были добавлены проверки на отладку в Windows и macOS, а в программу для кражи были внедрены механизмы сохранения активности — скрытая запланированная задача Windows, настроенная на перезапуск каждую минуту, и LaunchAgent для macOS, который перезагружается при входе в систему.

В Linux полезная нагрузка пошла еще дальше, связав библиотеку BPF ядра и загрузив программу eBPF непосредственно в ядро ​​из памяти. Это дало злоумышленнику доступ на уровне ядра , выходящий за рамки обычного доступа к файлам в пользовательском пространстве. StepSecurity и SafeDep зафиксировали эту возможность, хотя точное назначение программы eBPF все еще находится на стадии анализа. Данные управления оставались зашифрованными в исполняемом файле, но мониторинг StepSecurity в режиме реального времени зафиксировал, что загруженный исполняемый файл обращался к двум жестко закодированным IP-адресам и инфраструктуре Tor.

Индикаторы компромисса и меры по его смягчению

Выявлены вредоносные версии: 8.14.0, 8.16.0, 8.17.0, 8.18.0 и 8.20.0. Версия 8.15.0, опубликованная между первыми двумя, выглядит безопасной, и Jscrambler обозначил версию 8.22.0 как безопасную для обновления. Хэши SHA-256 для добавленных файлов и их распакованных полезных нагрузок были опубликованы компаниями по безопасности, вместе с двумя IP-адресами C2: 37.27.122.124 и 57.128.246.79. На хосте обнаружены артефакты, включая скрытый файл со случайным именем во временном каталоге системы, а также скрытую запланированную задачу Windows или LaunchAgent macOS для обеспечения постоянного присутствия.

Если вы или ваши системы сборки установили какую-либо затронутую версию, первым шагом является немедленное обновление до версии 8.22.0 и удаление всех следов вредоносных версий из файлов блокировки и кэша. Затем проведите аудит рабочей станции или CI-сервера, который загрузил пакет. Проверьте журналы установки на наличие выполнения dist/setup.js и поищите неожиданные дочерние процессы или выполнение временных каталогов в период установки. В Windows проверьте планировщик задач на наличие скрытых задач; в macOS проверьте ~/Library/LaunchAgents на наличие незнакомых plist-файлов. Наконец, считайте все секретные данные, к которым машина могла получить доступ, украденными — ротируйте облачные ключи, токены npm и GitHub, ключи API AI-tool и MCP, аннулируйте сессии Discord, Slack, браузера и Bitwarden, а также переместите любую криптовалюту из кошельков на этом хосте.

Атака подчеркивает суровую реальность: в экосистеме npm всего одна скомпрометированная учетная запись может превратить надежный инструмент разработки в вектор для кражи учетных данных и горизонтального перемещения. Скорость обнаружения — шесть минут для первого релиза — впечатляет, но способность злоумышленника распространять несколько версий и адаптировать метод доставки показывает, что защита цепочки поставок должна развиваться за пределы простой проверки скриптов. На данный момент наиболее безопасный путь — это привязка к проверенному релизу и рассмотрение любой утечки как полной компрометации затронутой среды.

Похожие посты: