Кибератака на популярные NPM-пакеты с миллиардами загрузок привела к компрометации экосистемы JavaScript через вредоносный червь.




Экосистема NPM снова столкнулась с чрезвычайно масштабной атакой на цепочку поставок, в ходе которой злоумышленники охотились за учетными данными. Последняя волна атак началась с пакета keyv (открывается в новом окне), который предоставляет библиотеку для хранения ключей и значений и недавно достиг около 150 миллионов загрузок в неделю. После этого были скомпрометированы еще более 400 других, частично очень популярных NPM-пакетов.

Как описывают исследователи безопасности из Aikido в блоге (открывается в новом окне), волна атак началась 4 августа. Среди скомпрометированных NPM-пакетов, помимо keyv, также flat-cache (открывается в новом окне), cachable (открывается в новом окне), file-entry-cache (открывается в новом окне) и многочисленные другие проекты, которые еженедельно загружаются миллионы раз.

Постоянно обновляемый и доступный для поиска список всех затронутых пакетов можно найти у Socket (открывается в новом окне). В настоящее время он включает 447 NPM-пакетов и 2 241 отдельную версию пакетов. Вместе затронутые пакеты, как утверждается, насчитывают более двух миллиардов загрузок в месяц. Согласно собственному анализу Socket (открывается в новом окне), злоумышленники внедрили в них preinstall-скрипт (setup.mjs), который загружает дополнительный скрытый вредоносный код (Math_Symbol.js).

Червь собирает учетные данные и многое другое

По имеющимся данным, вредоносный код основан на известном черве Shai-Hulud и ведет себя аналогично предыдущим волнам атак. Он предназначен для перехвата учетных данных и других конфиденциальных данных из CI/CD-конвейеров и систем разработчиков. К ним относятся, среди прочего, закрытые ключи, токены и данные конфигурации для облачных и онлайн-сервисов (например, AWS, GCP, Azure и Github) и других инструментов (таких как Kubernetes и SSH), а также базы данных Keepass.

Похищенные данные немедленно используются для компрометации дополнительных NPM-пакетов. Поэтому разработчикам настоятельно рекомендуется проверить, используют ли они один или несколько затронутых пакетов. Если это так, затронутые системы следует считать скомпрометированными, а учетные данные, доступные через них, необходимо быстро ротировать.

Индикаторы компрометации, полезные для киберзащиты и возможных работ по устранению последствий, а также дополнительные рекомендации по защите затронутых систем можно найти, помимо уже упомянутых отчетов Socket (открывается в новом окне) и Aikido (открывается в новом окне), также в отчетах исследователей безопасности из Wiz (открывается в новом окне), OX Security (открывается в новом окне), Stepsecurity (открывается в новом окне) и Safedep (открывается в новом окне).