В npm обнаружена еще одна крупная атака на цепочку поставок, затронувшая 17 популярных пакетов GlueStack @react-native-aria. В пакеты, загруженные более миллиона раз, был добавлен вредоносный код, работающий как троян удаленного доступа (RAT).
Атака на цепочку поставок обнаружили специалисты компании Aikido Security, которые заметили обфусцированный код, внедренный в файл lib/index.js следующих пакетов:
Имя пакета | Версия | Число еженедельных загрузок |
@react-native-aria/button | 0.2.11 | 51 000 |
@react-native-aria/checkbox | 0.2.11 | 81 000 |
@react-native-aria/combobox | 0.2.10 | 51 000 |
@react-native-aria/disclosure | 0.2.9 | 3 |
@react-native-aria/focus | 0.2.10 | 100 000 |
@react-native-aria/interactions | 0.2.17 | 125 000 |
@react-native-aria/listbox | 0.2.10 | 51 000 |
@react-native-aria/menu | 0.2.16 | 22 000 |
@react-native-aria/overlays | 0.3.16 | 96 000 |
@react-native-aria/radio | 0.2.14 | 78 000 |
@react-native-aria/switch | 0.2.5 | 477 |
@react-native-aria/toggle | 0.2.12 | 81 000 |
@react-native-aria/utils | 0.2.13 | 120 000 |
@gluestack-ui/utils | 0.1.17 | 55 000 |
@react-native-aria/separator | 0.2.7 | 65 |
@react-native-aria/slider | 0.2.13 | 51 000 |
@react-native-aria/tabs | 0.2.14 | 70 000 |
Так как пострадавшие пакеты популярны и их еженедельно скачивают около 1 020 000 человек, исследователи предупредили, что атака может иметь самые серьезные последствия.
Как отмечают журналисты издания BleepingComputer, компрометация началась на прошлой неделе, 6 июня 2025 года, когда в npm была опубликована новая версия пакета @react-native-aria/focus. С тех пор 17 из 20 пакетов GlueStack @react-native-aria были скомпрометированы.
По словам экспертов, вредоносный код сильно обфусцирован и добавляется в последнюю строку исходного кода файла с добавлением большого количества пробелов. По этой причине его нелегко заметить при просмотре кода на сайте npm.
Исследователи отмечают, что вредоносный код практически идентичен трояну удаленного доступа, обнаруженному в прошлом месяце, в ходе изучения другой атаки на цепочку поставок в npm.
Внедренная в пакеты малварь подключается к управляющему серверу злоумышленников и получает от него команды для выполнения. Среди них:
- cd — изменить текущий рабочий каталог;
- ss_dir — сменить директорию на путь скрипта
- ss_fcd:<path> — принудительно изменить каталог на <path>;
- ss_upf:f,d — загрузить отдельный файл f в место назначения d;
- ss_upd:d,dest — скачать все файлы из каталога d в пункт назначения dest;
- ss_stop — установить флаг остановки, прерывающий текущий процесс загрузки;
- любой другой ввод — рассматривается как шелл-команда и выполняется через child_process.exec().
Кроме того, троян также подменяет переменную среды PATH, добавляя в ее начало фальшивый путь (%LOCALAPPDATA%\Programs\Python\Python3127). Это позволяет малвари тихо перехватывать вызовы python и pip и выполнять вредоносные двоичные файлы.
Специалисты Aikido Security попытались связаться с разработчиками GlueStack и сообщить о компрометации, создавая issue на GitHub для каждого из репозиториев проекта, но не получили ответа. В итоге эксперты уведомили о проблемах администраторов npm, но обычно процесс удаления занимает несколько дней.
Эксперты связывают эту атаку со злоумышленниками, которые ранее скомпрометировали четыре других пакета в npm: biatec-avm-gas-station, cputil-node, lfwfinance/sdk и lfwfinance/sdk-dev.
После того как информация об этой атаке попала на страницы СМИ, разработчики GlueStack отозвали токен доступа, который использовался для публикации вредоносных пакетов, и теперь они помечены в npm как устаревшие.
«К сожалению, отменить публикацию скомпрометированной версии не удалось из-за зависимых пакетов, — пишет представитель GlueStack на GitHub. — В качестве профилактической меры я отозвал затронутые версии и обновил последний тег, чтобы он указывал на безопасную старую версию».