Компрометация node-ipc: кража ключей и данных через DNS
Компрометация node-ipc: в npm-пакет внедрили 80-килобайтный payload для кражи SSH-keys и cloud credentials
В экосистеме npm выявлен очередной инцидент, связанный с компрометацией популярного пакета node-ipc. По данным отчета, под удар попали версии 9.1.6, 9.2.3 и 12.0.1: в них был внедрен 80-kilobyte encrypted payload, загруженный через учетную запись скомпрометированного developer-а atiertant.
Вредоносный code был ориентирован на широкомасштабную кражу sensitive information — от SSH keys и credentials облачных провайдеров до конфигураций, связанных с AI code editors, и других данных. В общей сложности атака охватывала более 100 file paths на системах Linux и macOS.
Как работала атака
Особенность инцидента заключалась в способе доставки и скрытной exfiltration. Атакующий применил DNS exfiltration: похищенные данные упаковывались в gzipped tar archives и отправлялись через DNS TXT requests. Такой подход усложняет detection, поскольку DNS traffic обычно проверяется менее тщательно, чем другие каналы связи.
Сам пакет node-ipc широко используется для inter-process communication в Node.js. По сведениям из отчета, три скомпрометированные версии были опубликованы вскоре после предыдущего инцидента с protestware, связанного с оригинальным maintainer-ом. Это усилило обеспокоенность вокруг безопасности цепочки поставок в open source.
Изменения в пакете и запуск payload
Атака использовала изменения в структуре пакета: вредоносный payload подменил legitimate code в файле node-ipc.cjs. В результате code исполнялся немедленно при обращении к библиотеке — без каких-либо installation hooks.
Для усложнения анализа payload был замаскирован с применением стандартных obfuscation techniques. Без deobfuscation tools такие изменения заметить значительно труднее.
Техники сокрытия и эксфильтрации
Отчет выделяет несколько признаков malicious activity, направленных на сокрытие операций и indicators of compromise (IoC):
- эксфильтрация данных с HMAC signature;
- использование base64 encoding;
- разбиение данных на фрагменты перед отправкой;
- сокрытие конфиденциальных строк, включая configuration parameters, с помощью пользовательской схемы base-16 encoding.
По оценке авторов отчета, комбинация этих механизмов была рассчитана на то, чтобы замаскировать как саму передачу данных, так и технические следы компрометации.
Persistence и C2-инфраструктура
Отдельное внимание в отчете уделяется механизму persistence. Вредоносное ПО использовало переменную окружения __ntw, чтобы продолжать работу даже после завершения родительского Node.js-приложения. Это давало атакующему дополнительное время для сбора и отправки данных.
Командный домен C2, применявшийся для передачи информации, был стилизован под инфраструктуру Azure Static Web Apps. Такая маскировка позволяет трафику сливаться с legitimate cloud services и снижает вероятность быстрого обнаружения.
Что это значит для разработчиков
Инцидент вновь демонстрирует, насколько уязвимыми могут быть package management systems в open source ecosystem. Даже широко используемые библиотеки могут стать каналом для масштабной compromise, если злоумышленник получает доступ к maintainer account или цепочке публикации.
Авторы отчета рекомендуют разработчикам и компаниям:
- провести credential rotation, если были установлены скомпрометированные версии;
- использовать только known safe versions;
- внедрять тщательный dependency audit;
- усилить контроль за account security и процессами сопровождения пакетов.
Как отмечается в отчете, этот инцидент подчеркивает не только риск компрометации одной популярной библиотеки, но и более широкую проблему контроля над open source dependencies. Для разработчиков это сигнал к тому, что управление пакетами требует не меньшего внимания, чем защита production-инфраструктуры.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.


