В популярнейший репозиторий JavaScript подсажен троян. Под угрозой миллионы разработчиков
Злоумышленники очередной раз внедрили в популярные пакеты вредоносный код. Исправить ситуацию полностью у разработчиков не получается.
Свыше миллиона «заразных» скачиваний в неделю
Неизвестным злоумышленникам удалось внедрить вредоносные программы в популярные пакеты в репозитории JavaScript NPM, поставив под угрозу миллионы разработчиков. Речь идет о пакетах Gluestack @react-native-aria с общим количеством еженедельных скачиваний - свыше 1 млн.
Как указывается в публикации издания Bleeping Computer, во второй половине дня 6 июня 2025 г. в NPM была подгружена новая версия пакета @react-native-aria/focus, после чего 17 из 20 пакетов Gluestack были скомпрометированы в течение двух суток.
Опасность представляют пакеты @react-native-aria/ со следующими названиями: button, checkbox, combobox, disclosure, focus, interactions, listbox, menu, overlays, radio, switch, toggle, utils, separator, slider и tabs. Кроме того, скомпрометирован пакет @gluestack-ui/utils.
В сумме все эти расширения набирают более 1 млн скачиваний в неделю. Самыми популярными являются interactions, utils (aria) и focus - от 100 до 125 тыс. скачиваний.
Как пишет Bleeping Computer, вредоносный код глубоко обфусцирован и добавлен после финальной строки оригинального кода (с добавлением массы пробелов), так что обнаружить его с помощью утилиты предпросмотра на сайте NPM не так просто.
Не первая жертва
По данным исследователей компании Aikido, речь идет о троянце удаленного доступа, практически идентичном тому, который эксперты компании обнаружили в мае в пакете NPM rand-user-agent.
Оба троянца поддерживают такие команды, как смена рабочего каталога, переадресация каталога к расположению скрипта, принудительная замена каталога на заданный путь, загрузку отдельно взятого файла в заданную область, загрузку всех файлов выбранного каталога на заданный ресурс, и остановка процессов. Кроме того, он выполняет shell-команды через заданный дочерний процесс (child_process.exec()).
Троянец также выдает свое месторасположение за основной каталог языка Python, что позволяет ему перехватывать и подменять команды python или pip и таким образом запускать вредоносные исполняемые файлы.
Попытки представителей Aikido связаться с Gluestack принесли результаты не сразу, но в итоге разработчик принял меры: токен доступа, которым пользовались злоумышленники, отозван, а все скомпрометированные версии обозначены как нежелательные (deprecated).
«К сожалению, устранить скомпрометированную версию возможности нет из-за зависимых пакетов, - написал разработчик в репозитории GitHub. В качестве промежуточной меры я указал нежелательность для всех затронутых версий, и обновил тэг latest так, чтобы он указывал на более старую, безопасную версию».
«Очередной яркий - и масштабный - пример тому, насколько уязвима современная цепочка поставок ПО, особенно там, где имеют место многоуровневые взаимозависимости между компонентами», - отмечает Анастасия Мельникова, директор по информационной безопасности компании SEQ. «Сложность ситуации усугубляется ограничениями политики NPM, которая препятствует удалению скомпрометированных версий. Превентивных мер также не предусмотрено. «Лекарством» могли бы стать механизмы проверки целостности, цифровой подписи и прочих аутентификационных ограничений, которые препятствовали бы внедрению вредоносных компонентов»».
Эксперт указала, что пока такие ограничения не будут реализованы, аналогичные атаки будут продолжаться с растущей интенсивностью.