Ssylka

Криптовалютный червь: как десятки тысяч фейковых пакетов наводнили npm

С начала 2024 года реестр npm, ключевой компонент экосистемы JavaScript, подвергся массированной и продолжительной спам-атаке червеподобного типа. В рамках кампании, получившей название "IndonesianFoods", было опубликовано 46 484 поддельных пакета. Целью злоумышленников был не традиционный взлом или кража данных, а финансовая выгода через злоупотребление крипто-протоколом Tea, который вознаграждает разработчиков открытого кода.
Криптовалютный червь: как десятки тысяч фейковых пакетов наводнили npm
Изображение носит иллюстративный характер

Атаку первыми зафиксировали несколько исследовательских групп. Пол Маккарти, исследователь безопасности из SourceCodeRED, изначально обратил внимание на подозрительную активность. Позже компании Phylum (ныне часть Veracode) и Sonatype также сообщили о связанной кампании в апреле 2024 года. Детальный отчет, раскрывший масштаб и механизм атаки, был опубликован исследователями Крисом Стайку и Кираном Раджем из Endor Labs под руководством Хенрика Плейта.

Механизм распространения уникален своей простотой и эффективностью в обходе автоматических систем безопасности. Вредоносный код, содержащийся в файлах типа auto.js или publishScript.js, не активируется автоматически после установки пакета, как это делают многие зловреды. Для его запуска требуется ручное исполнение пользователем команды, например, node auto.js. Такой «спящий» режим позволяет коду оставаться незамеченным для большинства сканеров и песочниц, анализирующих поведение пакета при инсталляции.

При ручной активации скрипт запускает бесконечный цикл публикаций. Сначала он удаляет из файла package.json параметр "private": true", чтобы сделать пакет публичным. Затем генерирует случайное имя и версию для нового пакета, используя встроенный словарь, чтобы избежать дублирования. После этого он выполняет команду npm publish, загружая новый спам-пакет в реестр. Этот процесс повторяется непрерывно.

Скорость публикации ошеломляет: один новый пакет загружался каждые 7-10 секунд. Это соответствует производительности около 12 пакетов в минуту, 720 в час и почти 17 000 в сутки. Кроме того, все спам-пакеты ссылались друг на друга в качестве зависимостей, создавая плотную сеть. При попытке установить один такой пакет, менеджер зависимостей начинал вытягивать всю цепочку, создавая огромную нагрузку на пропускную способность инфраструктуры npm.

Основной мотивацией злоумышленников является крипто-фарминг. Они стремились злоупотребить протоколом Tea — децентрализованной системой, которая награждает разработчиков токенами TEA за их вклад в проекты с открытым исходным кодом. Публикуя десятки тысяч взаимосвязанных пакетов, атакующие искусственно завышали свой «показатель влияния» в системе, рассчитывая на получение вознаграждения.

Доказательства этой схемы были обнаружены непосредственно в коде. Некоторые пакеты, контролируемые злоумышленниками, такие как arts-dao и gula-dao, содержали файл tea.yaml. В этом конфигурационном файле были прописаны пять различных аккаунтов в системе Tea, на которые, предположительно, должны были начисляться токены.

Несмотря на масштаб, атака не отличалась технической сложностью в плане взлома. Её сила заключалась в автоматизации и объеме. Поддельные пакеты маскировались под проекты Next.js и использовали две основные схемы именования. Первая, давшая название кампании, основывалась на индонезийских именах и названиях продуктов. Вторая использовала случайные английские слова, например, able_crocodile-notthedevs.

Хотя атака не была нацелена на кражу учетных данных, ее воздействие на экосистему было значительным. Она привела к загрязнению реестра npm, бесполезной трате инфраструктурных ресурсов, ухудшению результатов поиска для разработчиков и созданию общего «шума», который мешал работе систем безопасности. Расследование показало, что злоумышленники, предположительно действующие из Индонезии, готовились к кампании более двух лет, а некоторые из их пакетов находились в реестре почти два года.

Представитель GitHub, владельца npm, подтвердил, что все обнаруженные вредоносные пакеты были удалены из реестра. Это было сделано в соответствии с политикой допустимого использования, которая запрещает кампании по распространению вредоносного ПО и нанесению технического вреда. Для обнаружения подобных угроз в GitHub применяется комбинация ручных проверок и систем машинного обучения.


Новое на сайте

18882Телескоп Джеймс Уэбб раскрыл тайны сверхэффективной звездной фабрики стрелец B2 18881Математический анализ истинного количества сквозных отверстий в человеческом теле 18880Почему даже элитные суперраспознаватели проваливают тесты на выявление дипфейков без... 18879Шесть легендарных древних городов и столиц империй, местоположение которых до сих пор... 18878Обзор самых необычных медицинских диагнозов и клинических случаев 2025 года 18877Критическая уязвимость CVE-2025-14847 в MongoDB открывает удаленный доступ к памяти... 18876Научное обоснование классификации солнца как желтого карлика класса G2V 18875Как безграничная преданность горным гориллам привела Дайан Фосси к жестокой гибели? 18874Новый родственник спинозавра из Таиланда меняет представления об эволюции хищников Азии 18873Как новая электрохимическая технология позволяет удвоить добычу водорода и снизить... 18872Могут ли ледяные гиганты Уран и Нептун на самом деле оказаться каменными? 18871Внедрение вредоносного кода в расширение Trust Wallet привело к хищению 7 миллионов... 18870Проверка клинического мышления на основе редких медицинских случаев 2025 года 18869Реконструкция черепа возрастом 1,5 миллиона лет меняет представление об эволюции Homo... 18868Почему декабрь — идеальное время для навигации по сокровищам звездного неба северного...