Криптовалютный червь: как десятки тысяч фейковых пакетов наводнили 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 применяется комбинация ручных проверок и систем машинного обучения.


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

20066[b]Фотосинтез в глазах мышей: возможно ли это без превращения в растение?[/b] 20065[b]СПКЯ стало СПМЯ: почему переименование болезни, затрагивающей миллионы женщин, заняло... 20064[b]Почему великая пирамида Гизы пережила все землетрясения за 4500 лет[/b] 20063[b]Генетика Homo erectus: что зубная эмаль рассказала о наших предках[/b] 20062[b]Кости в бухте эребус: что кости моряков Франклина рассказывают спустя полтора века[/b] 20061[b]Крупнейший плавучий ветрогенератор в мире: Китай испытывает установку у берегов... 20060[b]Карие глаза младенца стали индиго после лечения от COVID-19[/b] 20058[b]Почему серебряная чаша с Афиной пролежала в немецком лесу две тысячи лет?[/b] 20057[b]Дыра в атмосфере солнца: вспышка достигла пика и может зажечь полярное сияние[/b] 20056[b]Динго возрастом 950 лет: кто и зачем кормил могилу животного сотни лет?[/b] 20055[b]Томоэ гозэн: женщина-самурай, которая существовала на самом деле[/b] 20054[b]Что видели астронавты «Аполлона-12» над лунным горизонтом?[/b] 20053[b]Восковой блокнот на латыни и шёлковая туалетная бумага: кто посещал средневековый... 20052[b]Хантавирус на борту: 41 человек под наблюдением после рейса MV Hondius[/b]
Ссылка