29.06.2022

Опубликован анализатор, выявивший 200 вредоносных пакетов в NPM и PyPI

Фонд OpenSSF (Open Source Security Foundation), сформированный организацией Linux Foundation и нацеленный на повышение безопасности открытого ПО, представил открытый проект Package Analysis, развивающий систему анализа наличия вредоносного кода в пакетах. Код проекта написан на языке Go и распространяется под лицензией Apache 2.0. Предварительное сканирование рпозиториев NPM и PyPI при помощи предложенного инструментария позволило выявить более 200 ранее не замеченных вредоносных пакетов.

Основная часть выявленных проблемных пакетов манипулирует пересечением имён с внутренними непубличными зависимостями проектов (атака dependency confusion) или используют методы тайпсквотинга (назначение имён, похожих на названия популярных библиотек), а также вызывают в процессе установки скрипты, обращающиеся к внешним хостам. По мнению разработчиков Package Analysis, большая часть выявленных проблемных пакетов скорее всего создана исследователями безопасности, участвующими в программах получения вознаграждений за выявление уязвимостей (bug bountie), так как отправляемые данные ограничиваются именем пользователя и системы, и действия выполняются явно, без попыток скрыть своё поведение.

Из пакетов с вредоносной активностью отмечаются:

  • PyPI-пакет discordcmd, в котором зафиксирована отправка нетипичных запросов к raw.githubusercontent.com, Discord API и ipinfo.io. Указанный пакет загружал код бэкдора с GitHub и устанавливал его в каталог Windows-клиента Discord, после чего запускал процесс поиска токенов Discord в файловой системе и отправки их на внешний Discord-сервер, подконтрольный атакующим.
  • NPM-пакет colorsss, который также пытался пересылать на внешний сервер токены от учётной записи в Discord.
  • NPM-пакет @roku-web-core/ajax — в процессе установки отправлял данные о системе и запускал обработчик (reverse shell), принимающий внешние соединения и запускающий команды.
  • PyPI-пакет secrevthree — запускал reverse shell при импортировании определённого модуля.
  • NPM-пакет random-vouchercode-generator — после импортирования библиотеки отправлял запрос на внешний сервер, который возвращал команду и время в которое её необходимо запустить.

Работа Package Analysis сводится к анализу в исходных текстах пакетов кода для установки сетевых соединений, доступа к файлам и запуска команд. Дополнительно отслеживается изменение состояния пакетов для определения добавления вредоносных вставок в одном из выпусков изначально безобидного ПО. Для мониторинга появления новых пакетов в репозиториях и внесения изменений в ранее размещённые пакеты применяется инструментарий Package Feeds, унифицирующих работу с репозиториями NPM, PyPI, Go, RubyGems, Packagist, NuGet и Crate.

Package Analysis включает три базовых компонента, которые могут использоваться как в связке, так и по отдельности:

  • Планировщик запуска работ по анализу пакетов на основе данных из Package Feeds.
  • Анализатор, непосредственно проверяющий пакет и оценивающий его поведение с использованием методов статического анализа и динамической трассировки. Проверка осуществляется в изолированном окружении.
  • Загрузчик, помещающий результаты проверки в хранилище BigQuery.

Источник.