
Исследователи израильской компании Koi Security раскрыли масштабную вредоносную атаку PhantomRaven, которая распространялась через популярный магазин расширений NPM и затронула десятки тысяч разработчиков по всему миру.
Это 126 пакетов программного обеспечения (NPM-пакетов), которые выглядели совершенно безобидно, но включали скрытые компоненты, которые при установке отправляли конфиденциальную информацию из систем разработчиков, включая пароли для входа, токены, персональные данные и данные инфраструктуры разработки.
80 пакетов были активны на момент обнаружения, и, по словам исследователей, они распространялись с августа, не будучи обнаруженными большинством инструментов безопасности кода. Атака была обнаружена благодаря разработанному исследователями механизму поведенческого мониторинга, который заметил необычный трафик пакетов, направляемых на внешние серверы во время установки.
«Важно не принимать всё на веру и мыслить критически, даже когда кажется, что всё в порядке», - пояснили исследователи. «Разработчику, который чувствует, что что-то не так, лучше проверить, даже если это кажется ему глупостью».
Одним из ключевых способов сокрытия атаки было использование малоизвестной функции NPM - удалённых динамических зависимостей. Вместо того, чтобы указывать известные библиотеки в качестве зависимостей в коде, вредоносные пакеты включали ссылки на внешние веб-адреса, что позволяло им загружать вредоносный код при установке, не регистрируя его в системе.
Вредоносный код выполнялся автоматически с помощью скриптов, зарегистрированных в установочном файле, так что разработчик, установивший один из этих пакетов - даже косвенно - фактически активировал вредоносный код, не подозревая об этом.
Среди украденных данных: данные для входа в репозитории кода (GitHub, GitLab, Jenkins), токены для публикации новых пакетов, системная информация, IP-адреса и многое другое. Передача данных осуществлялась в несколько уровней, включая отправку через GET, POST и WebSocket, чтобы гарантировать передачу информации даже в защищённых средах.
Ещё одной уязвимостью, которой воспользовались злоумышленники, стало использование имён пакетов, которые выглядят как настоящие, - техника, известная как «слопсквоттинг». Они регистрировали имена пакетов, которые не существуют, но выглядят достаточно логично, чтобы системы искусственного интеллекта, такие как Copilot, добросовестно рекомендовали их разработчикам. В результате некоторые жертвы устанавливали эти пакеты, следуя рекомендациям систем искусственного интеллекта.
Исследователи подчеркнули, что помимо технических знаний от разработчиков требуется чувство ответственности и уверенности в себе, чтобы задавать вопросы, проверять и блокировать подозрительные установки. «Лучше задать глупый вопрос, чем внедрить вредоносный код во всю компанию», - заявили они.