Атака цепочки поставок npm: троян Node.js через LinkedIn‑мошенничество
Недавний инцидент, связанный с мошенническим предложением работы в LinkedIn, продемонстрировал целенаправленную supply-chain атаку с использованием троянской компоненты в Node.js application. Злоумышленник создал убедительный профиль в LinkedIn, представившись менеджером филиала с большим количеством связей, но без реальной активности — прием, который первоначально вызвал подозрения. Тем не менее, эта социальная инженерия стала начальной точкой для более сложной цепочки заражения устройств потенциальных жертв.
Механизм атаки
Ключевым элементом схемы стал постинсталляционный скрипт, встроенный в пакет npm. При выполнении команды установки через npm скрипт запускал вредоносную логику одновременно с легитимными зависимостями приложения. Злоумышленники использовали перехватчики жизненного цикла npm (lifecycle hooks), чтобы инициировать многоэтапную операцию по краже учетных данных и установлению связи с командным сервером.
- Вредоносный постинсталляционный код автоматически исполнялся во время установки пакета.
- Легитимный сервис был неправильно использован для размещения вредоносной полезной нагрузки, что помогало маскировать трафик и обходить базовые средства защиты.
- Установив соединение с C2 (command-and-control), вредоносное ПО получало инструкции и выгружало украденные данные.
«Злоумышленник обошёл меры безопасности, используя законный сервис для размещения вредоносной полезной нагрузки, делая вредоносный трафик выглядящим как обычный.»
Что искало вредоносное ПО
Атака была запрограммирована на сканирование системы в поисках конфиденциальной информации и последующую эксфильтрацию:
- Файлы конфигурации и среды — в том числе .env, .json;
- Документы различных форматов, где могут храниться учетные данные и ключи;
- Данные учетных записей и любые артефакты, пригодные для дальнейшего распространения или финансовой выгоды.
Для транспортировки данных злоумышленники использовали удалный репозиторий GitLab и сервер C2, размещённый у провайдера Cloudzy, что упростило процессы командования и эксфильтрации.
Экономическая мотивация атак
Экономика подобных мошенничеств обычно базируется на одной или нескольких из следующих целей:
- вывод несанкционированных платежей;
- добыча криптовалюты (cryptomining);
- использование похищенных учетных данных в дальнейших атаках и их перепродаже.
Индикаторы компрометации и детали инфраструктуры
- Подозрительный репозиторий в GitLab, содержащий postinstall-скрипт в package.json;
- Установленные связи с сервером C2, хостингом на Cloudzy и указанным IP-адресом для загрузки файлов;
- Автоматическое исполнение кода при установке пакета через npm (postinstall/lifecycle hooks).
Рекомендации для разработчиков и потенциальных жертв
Чтобы снизить риск попадания в подобные схемы, рекомендуется следующее:
- Тщательно проверять package.json на наличие сценариев автоматического выполнения (postinstall, preinstall и т. п.).
- Искать подозрительные конструкции в JavaScript-коде — например, функции eval() или Function.constructor, а также динамическое выполнение кода.
- Декодировать любые строки в Base64, которые выглядят странно или бессмысленно.
- Оценивать возраст репозитория и уровень активности: новые хранилища с минимальной историей и низкой активностью — потенциальный риск.
- Использовать инструменты анализа, включая специализированные решения на основе искусственного интеллекта, для обнаружения подозрительных паттернов в коде.
- Применять принципы доверия с минимальными привилегиями, изолирование сборок и контроль выполнения внешнего кода в CI/CD.
Красные флажки в предложениях о работе
При общении в LinkedIn и других профессиональных сетях следует насторожиться при следующих признаках:
- профили с большим количеством связей, но без активности;
- контракты или предложения, требующие предварительного выполнения кода на вашей машине;
- чрезмерная срочность и одновременно завышенное вознаграждение за технические задачи;
- требование доступа к приватным ключам, учетным данным или конфигурационным файлам.
Такие признаки могут указывать на попытку социальной инженерии, ведущую к supply-chain компрометации.
Итог и выводы
Инцидент подчёркивает важность постоянной бдительности и упреждающих мер в защите от эволюционирующих киберугроз. После обнаружения вредоносного поведения были предприняты соответствующие действия — проблема была заявлена, что привело к удалению опасного хранилища. Это наглядно демонстрирует, что сочетание технической осмотрительности и оперативного реагирования сообщества остаётся эффективным средством против подобных атак.
Рекомендация для читателя: регулярно проверяйте зависимости, ограничивайте исполнение стороннего кода и относитесь с осторожностью к неожиданным профессиональным предложениям в соцсетях.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.
