Зачем кто-то целых два года загружал на платформу мусорные пакеты?

Появление десятков тысяч фиктивных пакетов в экосистеме npm неожиданно превратилось в долгую и труднообъяснимую историю, начавшуюся ещё в 2024 году. Специалисты заметили, что к каталогу JavaScript-библиотек за два года добавлялись огромные объёмы бессодержательных проектов, которые не выполняли вредоносных действий на этапе установки, но стремительно разрастались, наполняя поисковую выдачу мусором и создавая нагрузку на инфраструктуру.
По данным исследовательских команд Endor Labs, Phylum и Sonatype, речь идёт о необычной схеме, где создатели используют череду автоматизированных публикаций, создавая десятки тысяч однотипных пакетов. В каждом из них лежит один и тот же файл, который активируется только при ручном запуске через консоль. После старта скрипт удаляет защитный параметр в конфигурации, генерирует случайное имя и версию, а затем отправляет очередную пустую библиотеку в общий реестр. Процесс повторяется бесконечно, обеспечивая постоянный поток новых публикаций с интервалом примерно в несколько секунд.
Авторы отчётов отмечают характерный признак кампании — единообразие названий, построенных на индонезийских словах. Это позволило условно обозначить волну как IndonesianFoods. Часть проектов ссылается друг на друга в зависимостях, что превращает скачивание одной такой библиотеки в загрузку целой сети, многократно увеличивая сетевую нагрузку. Отдельные пакеты содержат конфигурации для протокола Tea — децентрализованной системы поощрения разработчиков. Это указывает на попытку заработать цифровые токены за счёт искусственного роста показателей активности.
Суммарно было обнаружено свыше 67 тысяч публикаций, в том числе варианты, использующие уже другой набор названий — случайные английские словосочетания. Столь длительная и настойчивая активность говорит о продуманном и направленном процессе, в котором задействовано небольшое количество учётных записей npm. Отсутствие вредоносных действий при установке позволяло обойти автоматические проверки, поскольку многие защитные системы отслеживают только события на этапе установки и работу соответствующих хуков.
По словам представителей компаний, изучающих поставки программного обеспечения, эта кампания не была нацелена на кражу данных или получение доступа к машинам разработчиков. Главная цель заключалась в массовом наполнении хранилища бесполезными объектами, что само по себе создаёт проблемы для экосистемы. Отмечается и слабое место защитных инструментов — им сложно обнаружить угрозы, которые проявляются не в момент установки, а после ручного запуска файлов.
Представители GitHub сообщили, что выявленные пакеты уже удалены, а соответствующие аккаунты заблокированы. Компания заявила о готовности и дальше отслеживать подобную активность, используя автоматизированные методы и проверку вручную, а также призывая сообщество сообщать о нарушениях.