Июль 2025 года ознаменовался серией координированных кибератак на экосистему открытого программного обеспечения. За последние полторы недели злоумышленники успешно скомпрометировали несколько критически важных npm-пакетов, общее количество еженедельных загрузок которых превышает 30 миллионов. Атаки были направлены против разработчиков популярных библиотек JavaScript и осуществлялись через целевые фишинговые кампании.
Компрометация инфраструктуры Toptal: масштабный взлом GitHub и npm
Наиболее резонансным инцидентом стала компрометация компании Toptal — известной биржи фрилансеров и поставщика инструментов разработки. 20 июля 2025 года кибепреступники получили несанкционированный доступ к GitHub-аккаунту компании, мгновенно сделав публичными все 73 корпоративных репозитория, включая конфиденциальные проекты и исходные коды.
Исследователи из компании Socket установили, что злоумышленники действовали по четко продуманному плану. После получения контроля над репозиториями они модифицировали исходный код дизайн-системы Picasso, внедрив в него вредоносные компоненты, а затем опубликовали 10 зараженных пакетов в реестре npm под видом легитимных обновлений.
Встроенная в пакеты малварь была спроектирована для выполнения двух критических функций: кражи токенов аутентификации GitHub через скрипт preinstall и последующего уничтожения данных в системах жертв посредством скрипта postinstall. До обнаружения угрозы зараженные пакеты были загружены приблизительно 5000 раз.
Фишинговые атаки на мейнтейнеров популярных JavaScript-библиотек
Параллельно с инцидентом Toptal развивалась еще более масштабная кампания, нацеленная на разработчиков широко используемых npm-пакетов. Основной мишенью стал мейнтейнер JounQin, ответственный за поддержку пакета eslint-config-prettier с более чем 30 миллионами еженедельных загрузок.
Атака осуществлялась через тщательно спланированное фишинговое письмо, отправленное с адреса, имитирующего официальную поддержку npm ([email protected]). Содержащаяся в послании ссылка перенаправляла на поддельный домен npnjs[.]com — искусно замаскированную копию официального сайта npmjs.com.
Результатом успешной атаки стала компрометация нескольких критически важных пакетов: eslint-plugin-prettier, synckit, @pkgr/core и napi-postinstall. Злоумышленники использовали похищенные учетные данные для публикации вредоносных версий, содержащих специализированную малварь для Windows-систем.
Технические детали вредоносного кода
Анализ зараженных пакетов выявил сложную схему заражения. Вредоносный скрипт install.js активировался немедленно после установки пакета и содержал функцию logDiskSpace(), которая, вопреки своему названию, запускала исполняемый файл node-gyp.dll через системный процесс rundll32. Этот механизм обеспечивал проникновение стилера Scavanger — троянской программы для кражи конфиденциальной информации.
Компрометация библиотеки is: кроссплатформенный бэкдор
Третьим значимым инцидентом стала атака на пакет is — легковесную JavaScript-библиотеку с 2,8 миллионами еженедельных загрузок. Разработчик Джордан Харбанд оперативно обнаружил компрометацию версий 3.3.1-5.0.0, которые были удалены из реестра через шесть часов после публикации.
В данном случае злоумышленники использовали тот же поддельный домен npnjs[.]com для кражи учетных данных мейнтейнера. Внедренный в библиотеку код представлял собой кроссплатформенный JavaScript-загрузчик, создающий WebSocket-соединение для удаленного управления зараженными системами.
Вредоносная нагрузка собирала детальную информацию о хост-системе, включая имя компьютера, характеристики операционной системы и процессора, а также все переменные окружения. Каждое сообщение, получаемое через WebSocket, интерпретировалось как исполняемый JavaScript-код, фактически предоставляя злоумышленникам полный интерактивный доступ к скомпрометированным машинам.
Рекомендации по защите и восстановлению
Экспертное сообщество по кибербезопасности настоятельно рекомендует разработчикам провести немедленный аудит используемых зависимостей. Необходимо убедиться в отсутствии компрометированных версий пакетов в производственных системах и выполнить полное сканирование на предмет возможного заражения.
Данная серия инцидентов демонстрирует критическую важность защиты цепочек поставок программного обеспечения и необходимость повышения осведомленности разработчиков о методах социальной инженерии. Использование двухфакторной аутентификации, регулярная проверка источников коммуникации и осторожность при переходе по ссылкам в письмах остаются фундаментальными принципами защиты от подобных угроз.