Что случилось? Фонд OpenSSF представил открытый проект Package Analysis. Инструмент помогает анализировать пакеты на наличие вредоносного кода. Проект написан на языке Go и распространяется под лицензией Apache 2.0.
Как он работает? Package Analysis изучает поведение и возможности пакетов в открытых репозиториях. Инструмент проверяет, к каким файлам они имеют доступ, на какие адреса отправляют данные и какие команды запускают. Ещё анализатор следит за обновлениями пакетов, чтобы понимать, когда они начинают вести себя подозрительно.
И что? Всего за один месяц анализа npm- и PyPI- репозиториев специалисты из OpenSSF выявили 200 пакетов с вредоносным кодом. На GitHub-странице проекта разработчики рассказали про некоторые из пакетов с подозрительной активностью:
- discordcmd — PyPI-пакет, который загружает код бэкдора и устанавливает его в каталог Windows-клиента Discord, а затем ищет Discord-токены в файловой системе и отправляет на внешний сервер;
- colorsss — npm-пакет, который также пересылает токены от учётной записи в Discord на внешний сервер;
- @roku-web-core/ajax — npm-пакет, который в процессе установки отправляет данные о системе и запускает обработчик (reverse shell), принимающий внешние соединения и запускающий команды;
- secrevthree — PyPI-пакет, который запускает reverse shell при импортировании определённого модуля;
- random-vouchercode-generator — npm-пакет, который после импортирования библиотеки отправляет запрос на внешний сервер и получает команду и время её запуска.
Большая часть вредоносных пакетов манипулирует пересечением имён с внутренними зависимостями — dependency confusion — или использует тайпсквоттинг. А ещё — запускает скрипты и обращается к внешним хостам.
По мнению специалистов из OpenSSF, часть из обнаруженных пакетов — это, скорее всего, проекты исследователей по безопасности, которые участвовали в программах выявления уязвимостей (bug bounty).
Подробнее про Package Analysis можно посмотреть на GitHub-странице проекта.