Компания Aikido Security сообщила о критической инцидентной атаке, связанной с заражением популярных пакетов в репозитории npm (Node Package Manager) — самом крупном в мире реестре JavaScript-библиотек. Злоумышленникам удалось внедрить троян удалённого доступа в один из широко используемых наборов пакетов — Gluestack , включая библиотеку @react-native-aria. Это ставит под угрозу безопасность миллионов разработчиков по всему миру.
Как произошёл захват
Согласно данным Bleeping Computer, 6 июня 2025 года в npm была загружена новая версия пакета @react-native-aria/focus. В течение двух дней после этого 17 из 20 пакетов Gluestack были скомпрометированы.
Список поражённых пакетов:
1 @react-native-aria/button
2 @react-native-aria/checkbox
3 @react-native-aria/combobox
4 @react-native-aria/disclosure
5 @react-native-aria/focus
6 @react-native-aria/interactions
7 @react-native-aria/listbox
8 @react-native-aria/menu
9 @react-native-aria/overlays
10 @react-native-aria/radio
11 @react-native-aria/switch
12 @react-native-aria/toggle
13 @react-native-aria/utils
14 @react-native-aria/separator
15 @react-native-aria/slider
16 @react-native-aria/tabs
17 @gluestack-ui/utils
Эти пакеты суммарно скачиваются более миллион раз в неделю . Самые популярные среди них (interactions, utils и focus) скачивают от 100 до 125 тысяч раз еженедельно .
Особенности вредоносного кода
Злоумышленники применили продвинутую технику маскировки: вредоносный код был добавлен в конец оригинального файла , отделён длинными последовательностями пробелов, чтобы затруднить его обнаружение при поверхностном просмотре на сайте npm.
Обнаруженный троян представляет собой удалённый вирус (RAT) , функционал которого позволяет злоумышленникам:
- изменять рабочие каталоги,
- загружать файлы с устройства на удалённый сервер,
- выполнять shell-команды через
child_process.exec(), - перехватывать вызовы Python-интерпретатора (
python/pip), - запускать произвольные исполняемые файлы.
Также выяснилось, что вредонос идентичен коду , найденному ранее в пакете rand-user-agent, что указывает на координированную кампанию против экосистемы npm.
Что сделано для решения проблемы
После обращения специалистов Aikido к разработчикам Gluestack, те приняли следующие меры:
- Отозван компрометированный токен npm.
- Все заражённые версии помечены как deprecated .
- Тег
latestтеперь указывает на предыдущую, безопасную версию пакета.
Однако полностью удалить заражённые версии из npm не удалось, поскольку это нарушило бы работу зависимых проектов.
«К сожалению, мы не можем удалить эти версии. Вместо этого я отметил их как нежелательные и перенаправил тег latest на старую стабильную версию», — сообщил разработчик в репозитории GitHub.
Итог
Инцидент с Gluestack стал очередным сигналом о том, что современная инфраструктура разработки программного обеспечения требует усиления мер безопасности. С учётом масштаба использования npm-библиотек, заражение даже одного пакета может привести к катастрофическим последствиям. Теперь на разработчиков ложится дополнительная ответственность — тщательнее проверять зависимости и активнее использовать средства аудита и верификации кода.
