Обнаружен поток вредоносных пакетов npm и PyPi, похищающих широкий спектр конфиденциальных данных у разработчиков программного обеспечения на этих платформах.
Кампания началась 12 сентября 2023 года и была впервые обнаружена компанией Sonatype, аналитики которой нашли 14 вредоносных пакетов на npm.
По сообщению Phylum, после небольшого перерыва в работе 16 и 17 сентября атака возобновилась и распространилась на экосистему PyPI.
С момента начала кампании злоумышленники загрузили 45 пакетов на npm (40) и PyPI (5), причем варианты кода свидетельствуют о быстром развитии атаки.
Вредоносные пакеты
Полный список вредоносных пакетов, распространяемых в рамках этой кампании, можно найти в нижнем разделе отчета Phylum.
Однако стоит отметить, что следующие пакеты использовали typosquatting, чтобы походить на легитимные популярные пакеты, что может обмануть разработчиков при их установке:
- shineouts и @dynamic-form-components/shineout - имитируют популярную библиотеку React "Shineout"
- apm-web-vitals - может выдаваться за "APM" (мониторинг производительности приложений) для библиотеки Google "web-vitals", измеряющей производительность веб-сайтов
- eslint-plugin-shein-soc-raw и @spgy/eslint-plugin-spgy-fe - выдают себя за плагины ESLint
- ssc-concurrent-log-handler и sc-concurrent-log-handler - выдают себя за легитимные утилиты протоколирования
По данным Phylum, по меньшей мере семь различных волн атак и несколько фаз включали в себя модификации кода, направленные на повышение скрытности и более точное нацеливание.
Первая волна атак пришлась на период с 12 по 15 сентября, при этом угрожающие лица ежедневно загружали новые наборы пакетов, в результате чего общее количество пакетов достигло 33.
Последующие волны атак пришлись на 18 сентября (три пакета), 20 сентября (пять пакетов) и 24 сентября (четыре пакета).
В первых волнах пакеты имели жестко закодированные процедуры сбора и утечки данных, содержащие внутри себя код сбора данных в виде обычного текста, что делало их уязвимыми для обнаружения.
В средних итерациях появились более сложные механизмы, такие как получение и выполнение bash-скрипта сбора данных из внешнего домена.
Кроме того, авторы добавили "предустановочный" хук для автоматического запуска вредоносного JavaScript при установке.
В последних пакетах для обхода анализа использовалось кодирование base64, которое впоследствии было обновлено до двойного кодирования base64.
В целом злоумышленники вели непрерывный процесс тестирования и доработки кода и даже поставляли пакеты, которые специализировались на одних аспектах сбора данных больше, чем на других.
Угроза похищения информации
Данные, похищаемые пакетами, включают конфиденциальную информацию о машинах и пользователях.
Собираемая информация о машине и пользователе включает имя хоста, имя пользователя, текущий путь, версию ОС, внешний и внутренний IP-адреса, а также версию Python для пакетов PyPI.
Эти данные, а также конфигурации Kubernetes, хранящиеся в файлах kubeconfig и закрытых ключах SSH в папке ~/.ssh/id_rsa записываются в текстовый файл (ConceptualTest.txt) и отправляются на серверы злоумышленников.
Похищенная информация может быть использована для раскрытия реальных личностей разработчиков и предоставления злоумышленникам несанкционированного доступа к системам, серверам или инфраструктуре, доступ к которым осуществляется с помощью похищенных закрытых ключей SSH.
Если украденные конфигурации Kubernetes содержат учетные данные для доступа к кластерам, злоумышленники могут изменить развертывание, добавить вредоносные контейнеры, получить доступ к конфиденциальным данным, хранящимся в кластере, переместиться в другое место или совершить атаку с целью выкупа.
Пользователям платформ распространения кода, таких как PyPI и npm, рекомендуется с осторожностью относиться к тому, какие пакеты они загружают и запускают на своих системах, поскольку в этих экосистемах наблюдается постоянный приток вредоносного ПО.
По новым правилам Дзена свежие материалы показываются в первую очередь подписчикам, которые реагируют на публикации. Поэтому не забывайте подписаться, поставить лайк и оставить комментарий, так вы будете первым узнавать о всех новых статьях на нашем канале!