2 часа назад
Атака на цепочку поставок Trivy запустила червь CanisterWorm в десятках пакетов npm

Злоумышленники, стоящие за атакой на цепочку поставок популярного сканера Trivy, предположительно, проводят последующие атаки, которые привели к компрометации большого количества пакетов npm с помощью ранее не описанного самораспространяющегося червя CanisterWorm.
Название отсылает к тому факту, что вредоносная программа использует ICP-контейнер, обозначающий защищённый от взлома смарт-контракт в блокчейне Интернета, в качестве средства разрешения тайников. Как заявил исследователь Aikido Security Чарли Эриксен, это первое публично задокументированное злоупотребление ICP-контейнером для получения доступа к серверу управления и контроля (C2).
Ниже приведён список затронутых пакетов:
28 пакетов в области действия @EmilGroup;
16 пакетов в области действия @opengov;
@teale.io/eslint-config;
@airtm/uuid-base32;
@pypestream/floating-пользовательский интерфейс-dom.
Ранее злоумышленники использовали скомпрометированные учётные информация для публикации вредоносных релизов trivy, trivy-action и setup-trivy, содержащих программу для кражи данных. Предполагается, что за этими атаками стоит киберпреступная группа TeamPCP, специализирующаяся на облачных технологиях. Цепочка заражения, включающая пакеты npm, предполагает использование postinstall hook для выполнения загрузчика, который затем устанавливает бэкдор на Python, отвечающий за связь с хранилищем ICP для получения URL-адреса, указывающего на следующую полезную нагрузку. Децентрализованная инфраструктура хранилища делает её устойчивой и защищённой от попыток удаления.
«Контроллер контейнера может в любой момент изменить URL-адрес, отправляя новые бинарные файлы на все заражённые хосты», — сказал Эриксен.
Устойчивость обеспечивается с помощью службы пользователя systemd, которая настроена на автоматический запуск бэкдора на Python через 5 секунд, если он по какой-либо причине завершается с помощью директивы "Restart=always". Служба systemd маскируется под инструменты PostgreSQL ("pgmon"), чтобы оставаться незамеченной.
Бэкдор, как упоминалось ранее, каждые 50 минут отправляет в контейнер ICP поддельный User-Agent браузера, чтобы получить URL-адрес в открытом виде. Затем URL-адрес анализируется для получения и запуска исполняемого файла.
«Если URL-адрес содержит youtube[.]com, скрипт пропускает его. Это спящее состояние контейнера. Злоумышленник активирует имплант, направив контейнер на реальный исполняемый файл, и деактивирует его, переключившись обратно на ссылку YouTube. Если злоумышленник обновит контейнер, указав новый URL-адрес, каждая заражённая машина при следующем запросе получит свежий исполняемый файл. Старый исполняемый файл продолжает работать в фоновом режиме, поскольку сценарий никогда не завершает предыдущие процессы», — пояснил Эриксен.
Стоит отметить, что аналогичный механизм аварийного отключения на основе youtube[.]com также был обнаружен Wiz в связи с троянизированным исполняемым файлом Trivy (версия 0.69.4), который обращается к тому же контейнеру ICP через другой Python-дроппер ("sysmon.py"). На момент написания статьи URL-адрес, возвращаемый C2, представляет собой видео rickroll на YouTube.
В Hacker News обнаружили, что контейнер ICP поддерживает три метода — get_latest_link, http_request, update_link — новейший из которых даёт возможность злоумышленнику в любое время изменить поведение для запуска реальной полезной нагрузки.
Вместе с этим, пакеты содержат файл "deploy.js", который злоумышленник запускает вручную, чтобы распространить вредоносную нагрузку на каждый пакет, к которому украденный токен npm предоставляет доступ программным способом. Червь, предположительно, созданный с помощью инструмента искусственного интеллекта (ИИ) и использующий технологию Vibe, не пытается скрыть свою функциональность.
Ситуация усугубляется тем, что обнаруженная в версиях 1.8.11 и 1.8.12 "@teale.io/eslint-config" мутация CanisterWorm крадет токены npm и использует их для самораспространения без необходимости ручного вмешательства. В отличие от "deploy.js", представлявшего собой автономный скрипт, который злоумышленник должен был запустить с украденными токенами npm для установки вредоносной версии пакетов npm в реестр, новый вариант включает эту функциональность в "index.js" в функции findNpmTokens(), которая запускается на этапе postinstall для сбора токенов аутентификации npm с машины жертвы.
Основное отличие заключается в том, что сценарий postinstall после установки постоянного бэкдора пытается найти все токены npm из среды разработчика и немедленно запускает червя с этими токенами, запуская "deploy.js" как полностью отсоединённый фоновый процесс.
Интересно, что, по имеющимся данным, злоумышленник заменил полезную нагрузку бэкдора ICP на фиктивную тестовую строку ("hello123"), вероятно, чтобы убедиться, что вся цепочка атаки работает должным образом, прежде чем добавлять вредоносное ПО.
«Это тот момент, когда атака переходит от „скомпрометированный аккаунт публикует вредоносное ПО“ к „вредоносное ПО компрометирует больше аккаунтов и публикует себя“. Каждый разработчик или конвейер CI, который устанавливает этот пакет, становится невольным вектором распространения», — сказал Эриксен.
Компания Socket, занимающаяся безопасностью цепочки поставок программного обеспечения, сообщила, что атака CanisterWorm на цепочку поставок распространилась на 141 вредоносный артефакт, охватывающий более 66 уникальных пакетов.
«В наблюдаемой активности злоумышленник, по-видимому, получил один или несколько токенов публикации npm или эквивалентный доступ к публикации CI/CD и использовал этот доступ для замены легитимного содержимого пакета вредоносным кодом, а затем повторно опубликовал полезную нагрузку в дополнительных пакетах, доступных по скомпрометированным учетным данным», — заявила организация.
Дополнительные анализы CanisterWorm были опубликованы Endor Labs и JFrog, которые охарактеризовали вредоносное ПО как сборщик учётных данных и загрузчик вредоносного ПО. Он ищет токены аутентификации npm, сканируя машину разработчика, а затем передает собранные токены вторичному скрипту («deploy.js»), который действует как червь, распространяя вредоносную логику по программному обеспечению жертвы.
«Хотя сбор учётных данных через пост-инсталляционные хуки — это хорошо зарекомендовавшая себя тактика, Shai-Hulud доказал, что украденные токены npm могут быть немедленно использованы для заражения и повторной публикации собственных пакетов жертвы, превращая единичный случай компрометации в экспоненциально расширяющуюся атаку. Проанализированная здесь кампания следует тому же сценарию, подтверждая, что самораспространение, подобное червям, стало повторяющейся техникой, а не единичным случаем», — сказал Хенрик Плате, руководитель отдела исследований безопасности в Endor Labs.
В сентябре NPM-пакет tinycolor был скомпрометирован в ходе атаки. Она затронула более 40 пакетов библиотеки, а после самораспространяющийся червь заразил ещё более 300. Злоумышленники смогли распространить вредоносное ПО с помощью функции NpmModule.updatePackage, внедрённой в скомпрометированные библиотеки. Кампания получила название Shai-Hulud, она довольно сложна и использует TruffleHog, легитимный инструмент для скрытого сканирования, чтобы искать и проверять учётные информация перед их передачей в веб-перехватчик.
В ноябре новая кампания в цепочке поставок Sha1-Hulud затронула более 25 000 репозиториев через npm с кражей учетных данных на этапе preinstall. Злоумышленники добавляли preinstall сценарий (setup_bun.js) в список пакетов (package.json), который настроен на скрытую установку или обнаружение среды выполнения Bun и запуск вложенного вредоносного скрипта (bun_environment.js).
Читают сейчас

51 минуту назад
Японская Balmuda совместно с Джони Айвом выпустила The Clock — минималистичный будильник с режимами для фокусировки
Японская организация Balmuda совместно с бывшим дизайнером Apple Джони Айвом (Jony Ive) выпустила минималистичные часы-будильник The Clock. Помимо привычных функций, ожидаемых от будильника, есть режи

53 минуты назад
ВК ДжейТи Встреча: оптимизация и масштабируемость на Go
Привет, овчане! Весной стартует F1 для Go-разработчиков, встречаемся в двух столицах: 4 апреля — в Москве, 11 апреля — в Санкт-Петербурге. Обсудим реальные кейсы из практики VK и архитектурные решения

53 минуты назад
Исследователь провёл реверс-инжиниринг TiinyAI Pocket Lab на основе маркетинговых данных
Энтузиаст воссоздал характеристики мини-ПК TiinyAI Pocket Lab по маркетинговым фотографиям. Выяснилось, что организация во многом преувеличила возможности устройства. Читать далее

55 минут назад
В Антарктиде построят станцию для молодых учёных
Российские учёные смогут приступить к исследованиям на антарктическом острове Смоленск уже в январе 2027 года. Для этого планируется создать новую полярную станцию по инициативе Фёдора Конюхова, о чём

1 час назад
Цукерберг разрабатывает персонального ИИ-агента, который должен помочь ему выполнять работу гендиректора
Генеральный директор Meta* Марк Цукерберг разрабатывает персонального агента на искусственном интеллекте, который должен помочь выполнять работу главы корпорации, пишет Wall Street Journal. Источники