Смарт-контракты Ethereum скрывают ловушки! Пакет npm был заражен вредоносной программой, нацеленной на разработчиков.

Исследователи по безопасности предупреждают, что новый тип атаки потихоньку использует смарт-контракты Ethereum в качестве канала командования и управления (C2), скрывая вредоносные программы в на вид безвредных npm JavaScript ловушках, специально нацеленных на компьютеры разработчиков. Этот метод не только усложняет отслеживание и удаление, но и использует неизменяемость и открытость Блокчейна, что делает защиту еще более сложной.

вредоносные npm ловушка как использовать Ethereum для передачи атакующих команд

ReversingLabs обнаружила, что два npm пакета под названием colortoolsv2 и mimelib2 считывают определенные смарт-контракты на Ethereum, чтобы получить URL для вредоносного загрузчика второго этапа, а не жестко кодируют инфраструктуру в пакетах.

Этот дизайн снижает вероятность статического анализа и оставляет меньше улик при проверке кода. Хотя количество загрузок этих двух пакетов крайне низкое (7 и 1 соответственно), их подход к атаке представляет собой серьезную угрозу для безопасности цепочки поставок.

Скрытие на GitHub и социальная инженерия для установки

Исследование показывает, что распространение этих вредоносных пакетов происходит из сети репозиториев GitHub, замаскированных под торговых роботов, например, solana-trading-bot-v2.

Атакующие с помощью ложных звезд, преувеличенной истории提交 и аккаунтов марионеточных администраторов, заставляют разработчиков невольно устанавливать вредоносные зависимости.

Этот метод аналогичен атаке на домены npm в конце 2024 года, когда сотни пакетов на этапе установки запрашивали смарт-контракты Ethereum, получали базовый URL и затем загружали вредоносные исполняемые файлы для Windows, Linux и macOS.

Технические детали канала команд на Блокчейне

Безопасная компания Checkmarx и Phylum обнаружили, что основной адрес контракта, используемого нападающими, составляет 0xa1b40044EBc2794f207D45143Bd82a1B86156c6b, и через ethers.js вызывают getString(address) для получения последнего адреса C2 сервера.

Эти C2 узлы включают 45.125.67.172:1337 и 193.233.201.21:3001, которые будут изменяться со временем, чтобы избежать блокировки.

Поскольку данные смарт-контрактов нельзя изменить или удалить, такой способ хранения на блокчейне сложнее удалить, чем традиционные GitHub Gist или облачное хранилище.

Рекомендации по защите: блокировка скриптов жизненного цикла и сетевых запросов

Эксперты рекомендуют, чтобы команда разработчиков включила параметр --ignore-scripts при установке npm и в процессе CI, чтобы предотвратить автоматическое выполнение вредоносных скриптов жизненного цикла, а также зафиксировала версии пакетов через файлы блокировки.

В то же время необходимо заблокировать известные вредоносные IP и адреса контрактов в брандмауэре или безопасном прокси, а также отслеживать подозрительные вызовы к getString(address) в журнале построения.

Официальное руководство по безопасности Node.js также рекомендует проводить более строгую проверку идентичности мейнтейнеров и метаданных пакетов, чтобы снизить риски атак на цепочку поставок.

Заключение

Хотя на количество загрузок это событие не оказало значительного влияния, оно выявило более скрытую и трудную для предотвращения модель атаки — использование Блокчейн в качестве постоянного канала команд, в сочетании с социальной инженерией и проникновением в открытые цепочки поставок, что создает долгосренную угрозу для разработчиков и компаний. В будущем сочетание цепочных вредоносных программ и традиционных атак на цепочку поставок может стать новой нормой в области кибербезопасности.

ETH0.49%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • комментарий
  • Репост
  • Поделиться
комментарий
0/400
Нет комментариев
  • Закрепить