Крупная атака на инструменты разработки: пакеты Nx в npm скомпрометированы вредоносным кодом

information security

В ночь на вторник система автоматического мониторинга Aikido Intel обнаружила признаки масштабной компрометации популярных пакетов из экосистемы @nx в репозитории npm. По предварительным оценкам, еженедельное количество загрузок затронутых пакетов достигает 6 миллионов. Уникальность инцидента заключается в том, что злоумышленники не стали скрытно передавать похищенные данные на свои серверы, а разместили их в открытом доступе на GitHub, что многократно увеличивает потенциальный ущерб.

Вредоносный код был внедрён в несколько версий пакетов, включая nx, @nx/workspace, @nx/js и другие. Заражённые версии: 21.5.0, 20.9.0, 20.10.0, 21.6.0, 20.11.0, 21.7.0, 21.8.0 и 3.2.0. Команда разработчиков nx уже опубликовала официальное уведомление с детальным описанием инцидента и хронологией событий.

Анализ кода показывает, что вредоносный скрипт telemetry.js выполнялся автоматически через postinstall-хук в package.json. Его функциональность включает несколько опасных действий. Во-первых, он проводит рекурсивный поиск конфиденциальных данных в домашних директориях пользователей, включая файлы криптокошельков (Metamask, Electrum, Ledger), SSH-ключи (id_rsa), переменные окружения (.env) и другие чувствительные файлы. Во-вторых, скрипт извлекает учетные данные разработчиков: токены GitHub CLI, имена пользователей npm и содержимое файла .npmrc, которое может включать токены регистратуры.

Наиболее деструктивным элементом является модификация файлов оболочки (.bashrc, .zshrc) путём добавления команды принудительного завершения работы системы (sudo shutdown -h 0). Это может привести к немедленному отключению компьютера при следующем входе пользователя.

Особый интерес представляет использование Large Language Model (LLM) клиентов как нового вектора атаки. Скрипт проверяет наличие установленных LLM-инструментов (Claude, Gemini, Q) и пытается использовать их для поиска секретов на локальной машине. Это первый известный случай применения подобной техники в реальной атаке.

При обнаружении токена GitHub скрипт создаёт в учётной записи жертвы публичный репозиторий с именем s1ngularity-repository (или с числовым суффиксом) и загружает туда похищенные данные в двойном base64-кодировании. Изначально было обнаружено около 1400 таких репозиториев, но GitHub уже начал их блокировку.

Для минимизации последствий рекомендуется проверить учётные записи GitHub на наличие несанкционированных репозиториев с именами s1ngularity-repository(-X) и немедленно их удалить. Необходимо выполнить ротацию всех потенциально скомпрометированных секретов: токенов GitHub, npm и других чувствительных данных. Также следует проверить файлы .bashrc и .zshrc на наличие malicious-команд и удалить их.

Публикация похищенных данных в открытом доступе значительно повышает риски каскадных атак на программную supply chain (цепочку поставок). Злоумышленники, получившие доступ к npm-токенам, могут использовать их для новых атак на экосистему open source. Эксперты предупреждают, что текущий инцидент может быть лишь первой волной скоординированной кампании.

Комментарии: 0