Исследовательская группа по киберугрозам Socket обнаружила вредоносный пакет для языка программирования Rust, который более восьми месяцев находился в официальном реестре Crates.io и был загружен тысячи раз. Пакет под названием "evm-units", созданный пользователем "ablerust", маскировался под библиотеку для работы с Ethereum Virtual Machine (EVM), но на самом деле представлял собой кроссплатформенный загрузчик второго этапа. Его главной целью, вероятно, является кража криптовалюты, а специфическая проверка наличия антивируса Qihoo 360 указывает на фокус злоумышленников на азиатский рынок.
Описание
По данным исследователей, пакет был скачан более 7000 раз. После получения отчёта от Socket команда модераторов Crates.io удалила пакет в течение нескольких минут. Однако его вредоносная функциональность была также встроена в другой популярный пакет - "uniswap-utils", который загрузили уже более 7400 раз. Это классический пример компрометации цепочки поставок, когда опасный код проникает в проекты через зависимости.
Механизм атаки был продуман для обмана разработчиков. Вредоносная активность запускалась при вызове функции "get_evm_version()", которая действительно возвращала номер версии, что выглядело легитимно. Однако параллельно эта функция инициировала скрытую последовательность действий. Сначала она декодировала зашифрованный URL, ведущий на контролируемый злоумышленниками сервер. Затем, в зависимости от операционной системы жертвы, загружала и исполняла вредоносную нагрузку (payload).
На Linux система скачивала скрипт, сохраняла его в "/tmp/init" и незаметно запускала в фоне с помощью "nohup bash". На macOS процедура была аналогичной, но для выполнения использовался "osascript". Код для Windows демонстрировал наибольшую изощрённость. Он проверял, запущен ли на системе антивирус Qihoo 360, популярный в Азии. В зависимости от результата нагрузка запускалась либо напрямую скрытым процессом PowerShell, либо через промежуточный VBScript для лучшей маскировки.
Использование проверки на Qihoo 360 является редким и ярким индикатором целевого региона. Это косвенно подтверждает гипотезу о криптографическом характере угрозы, поскольку Азия остаётся одним из крупнейших рынков розничной торговли цифровыми активами. Кроме того, во всех вариантах кода загрузчик намеренно отключал проверку SSL-сертификатов, что позволяло злоумышленникам легко менять серверы и использовать самоподписанные сертификаты.
Особую опасность добавлял механизм скрытного запуска. Пакет "evm-units" не имел функции "main()" и активировался только при вызове извне. Однако пакет "uniswap-utils", представленный как безобидная библиотека-помощник для работы с Uniswap, зависел от "evm-units". С помощью специальной аннотации "#[ctor::ctor]" вредоносный код выполнялся автоматически при инициализации, без ведома разработчика, который просто добавил полезную зависимость.
Этот инцидент подчёркивает растущую тенденцию внедрения сложных угроз в инфраструктуру с открытым исходным кодом, особенно в сегменте, связанном с блокчейном и криптовалютами. Угрозы становятся всё более целенаправленными и используют знания о локальных особенностях рынка, таких как доминирование конкретного антивируса. Специалисты по безопасности рекомендуют организациям усилить мониторинг зависимостей в своих проектах. Решения, подобные сканеру Socket, которые анализируют поведение кода, а не только статические сигнатуры, могут выявлять подобные аномалии, такие как загрузка платформозависимых payload, скрытый запуск скриптов и автоматическое выполнение кода при инициализации. Интеграция таких проверок в CI/CD-пайплайны и постоянный аудит уже установленных пакетов становятся критически важными мерами для защиты цепочек поставок программного обеспечения.
Индикаторы компрометации
Malicious URLs
- https://download.videotalks.xyz/gui/6dad3/id=5244544112427978&secret=NByUZrutDGoS
SHA256
- 6d09e646856aa96fd118f9e5725dc8565deac4b441a96a011e528c0732db9c51
Base64-Encoded String
- aHR0cHM6Ly9kb3dubG9hZC52aWRlb3RhbGtzLnh5ei9ndWkvNmRhZDMvaWQ9NTI0NDU0NDExMjQyNzk3OCZzZWNyZXQ9TkJ5VVpydXRER29T
Malicious Cyber Threat Actor Crates Alias
- ablerust
Malicious Package
- evm-units