Атака на цепочку поставок Trivy запустила червь CanisterWorm в десятках пакетов npm. github.. github. npm.. github. npm. npm-пакет.. github. npm. npm-пакет. Open source.. github. npm. npm-пакет. Open source. trivy.. github. npm. npm-пакет. Open source. trivy. автоматизированная система.. github. npm. npm-пакет. Open source. trivy. автоматизированная система. атака на цепочку поставок.. github. npm. npm-пакет. Open source. trivy. автоматизированная система. атака на цепочку поставок. вредоносное по.. github. npm. npm-пакет. Open source. trivy. автоматизированная система. атака на цепочку поставок. вредоносное по. Информационная безопасность.. github. npm. npm-пакет. Open source. trivy. автоматизированная система. атака на цепочку поставок. вредоносное по. Информационная безопасность. кража данных.. github. npm. npm-пакет. Open source. trivy. автоматизированная система. атака на цепочку поставок. вредоносное по. Информационная безопасность. кража данных. Управление разработкой.. github. npm. npm-пакет. Open source. trivy. автоматизированная система. атака на цепочку поставок. вредоносное по. Информационная безопасность. кража данных. Управление разработкой. червь.

Злоумышленники, стоящие за атакой на цепочку поставок популярного сканера Trivy, предположительно, проводят последующие атаки, которые привели к компрометации большого количества пакетов npm с помощью ранее не описанного самораспространяющегося червя CanisterWorm.

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

Название отсылает к тому факту, что вредоносная программа использует ICP-контейнер, обозначающий защищённый от взлома смарт-контракт в блокчейне Интернета, в качестве средства разрешения тайников. Как заявил исследователь Aikido Security Чарли Эриксен, это первое публично задокументированное злоупотребление ICP-контейнером с целью получения доступа к серверу управления и контроля (C2).

Ниже приведён список затронутых пакетов:

  • 28 пакетов в области действия @EmilGroup;

  • 16 пакетов в области действия @opengov;

  • @teale.io/eslint-config;

  • @airtm/uuid-base32;

  • @pypestream/floating-ui-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).

Автор: maybe_elf

Источник

Rambler's Top100