Экосистема JavaScript и Node.js базируется на широкой сети открытых исходных кода библиотек, доступных через менеджер пакетов NPM. Это облегчает разработку и ускоряет запуск проектов, но одновременно создаёт потенциальные риски безопасности. В июле 2025 года сообщество разработчиков было потрясено сообщением о серьёзном инциденте, связанном с популярным NPM-пакетом 'is', который еженедельно загружают более 2.8 миллиона раз.
Этот пакет, широко использующийся для проверки типов и валидации данных, стал целью масштабной атаки поставщика цепочки поставок, в результате чего в его код были внедрены вредоносные компоненты. Компрометация произошла после того, как злоумышленники перехватили доступ к аккаунтам мейнтейнеров через фишинговую атаку. Фальшивый домен 'npnjs[.]com', имитирующий официальный NPM-ресурс, использовался для кражи учётных данных и последующего внесения изменений в состав владельцев пакета, которые остались незамеченными несколько часов. Воспользовавшись этим, атакующие опубликовали заражённые версии 'is' в промежутке между версиями 3.
3.1 и 5.0.0, которые включали сложное вредоносное программное обеспечение, нацеленное на контроль над заражёнными системами. Вредоносный код использовал механизм загрузки, основанный на WebSocket, создавая скрытую backdoor-связь для удалённого исполнения команд.
После активации вредоносное ПО собирало конфиденциальную информацию о системе пользователя, включая данные о хосте, операционной системе, процессоре и ряд переменных окружения. Полученная информация передавалась шифрованным каналом, что существенно затрудняло детектирование злоумышленников. Более того, получатель мог отправлять команды, которые выполнялись в среде Node.js, предоставляя злоумышленникам полноценный интерактивный удалённый доступ к системе жертвы. Помимо пакета 'is', в рамках той же атаки были взломаны и другие популярные NPM-проекты: eslint-config-prettier, eslint-plugin-prettier, synckit, @pkgr/core, napi-postinstall и got-fetch.
Анализ вредоносных загрузчиков в этих пакетах выявил присутствие Windows-инфостилера под названием 'Scavanger', который нацелен на кражу конфиденциальных данных, хранящихся в браузерах, таких как пароли, куки и история. Техника сокрытия вредоносной активности включала использование непрямых системных вызовов и зашифрованных каналов связи с командным сервером, что позволяет избегать обнаружения традиционными антивирусными системами и средствами мониторинга трафика. Однако известные манипуляции с флагами безопасности в браузере Chrome иногда позволяют выявить подозрительную активность на стороне клиента. Происшествие подчёркивает серьёзность угроз, исходящих из цепочек зависимостей современных программных проектов. Многие разработчики не подозревают, что одна уязвимая библиотека может поставить под угрозу весь проект и, в конечном счёте, клиентские данные.
В случае с 'is' вредоносный код распространялся незаметно из-за высокой степени доверия к пакету и его широкой популярности. Чтобы обезопасить свои проекты, мейнтейнерам и разработчикам настоятельно рекомендуется провести пересмотр текущих практик безопасности. Прежде всего, это сброс паролей и обновление всех токенов доступа для аккаунтов на NPM, использование многофакторной аутентификации и постоянный мониторинг активности в репозиториях. Кроме того, важно отключить автоматическое обновление пакетов и фиксировать версии с помощью lock-файлов, чтобы исключить возможность незапланированного внедрения вредоносного кода. Помимо технических мер, сообщество должно уделять внимание получению информации только из проверенных и надёжных источников и регулярно обновлять свои знания о новых угрозах и методах защиты.
Профессионалы в области безопасности советуют проверять цифровые подписи пакетов, использовать инструменты для анализа зависимостей и агрессивно искать аномалии в поведении программного обеспечения. Инцидент с пакетом 'is' — предупреждение для всего IT-мира о том, насколько уязвимой может быть цепочка поставок программного обеспечения. Разработчики, компании и платформы, предоставляющие пакеты, должны усилить сотрудничество для выработки более строгих стандартов безопасности и автоматизированных систем обнаружения компрометаций. Современные инструменты разработки зависят от тысяч сторонних компонентов, а безопасность одного элемента влияет на всю экосистему. Только совместные усилия по внедрению проактивных мер и прозрачность в вопросах безопасности помогут минимизировать риски и сохранить доверие к открытому программному обеспечению.
Таким образом, разработчики должны проявлять повышенную бдительность, тщательно проверять все зависимости, обновлять свои инструменты безопасности и следовать рекомендациям экспертов, чтобы не стать жертвами подобных атак. Время уроков, полученных на этом случае, поможет сформировать устойчивую к будущим угрозам экосистему разработки программного обеспечения.