ForceMemo: компрометация GitHub, вредоносный код в Python и Solana C2
Недавняя кампания, идентифицированная под именем ForceMemo, привела к компрометации сотен учётных записей GitHub и внедрению вредоносного ПО в многочисленные репозитории Python. Самые ранние зафиксированные случаи относятся к 8 марта 2026 года; на момент исследования кампания оставалась активной и могла по-прежнему приводить к новым компрометациям.
Краткое содержание
- Злоумышленники компрометируют учётные записи разработчиков и встраивают вредоносный код в критические файлы проектов — в частности
setup.pyиmain.py. - Начальная точка взлома связана с вредоносным ПО GlassWorm, которое заражает разработческую среду через вредоносные компоненты Visual Studio и расширения Cursor.
- После кражи токенов GitHub злоумышленники автоматически отправляют коммиты с вредоносным кодом, при этом сохраняются метаданные исходных коммитов, создавая видимость легитимности изменений.
- Особенность кампании — использование блокчейна Solana как канала управления (C2): команды и URL полезной нагрузки считываются из транзакций в цепочке.
Как работает атака — цепочка компрометации
Атака развивается по цепочке:
- Первичное заражение разработчика: вредоносное ПО GlassWorm внедряется через модифицированные компоненты Visual Studio и/или через вредоносные расширения Cursor. В результате на машине разработчика появляется модуль кражи учетных данных и GitHub-токенов.
- Кража токенов и подделка коммитов: получив токены GitHub, злоумышленники отправляют коммиты компрометации в репозитории, сохраняя метаданные (автора, время и т.д.), что делает эти коммиты на первый взгляд легитимными.
- Встраивание вредоносного кода: атакующие встраивают запутанные полезные нагрузки в важные файлы Python-проектов, включая
setup.pyиmain.py. Выполнение такого кода при установке или запуске приводит к инфицированию целевой системы. - Канал управления через Solana: инструкции и URL для загрузки дополнительной полезной нагрузки публикуются в транзакциях блокчейн-сети Solana, что делает их неизменяемыми, устойчивыми к цензуре и сложными для блокировки традиционными способами.
Технические особенности вредоносного ПО
- Многоуровневое запутывание: комбинация base64-кодирования, сжатия zlib и шифрования XOR со статическим ключом.
- Географические проверки: вредоносное ПО содержит механизмы, препятствующие выполнению в системах, расположенных в России — типичная «оперативная безопасность» (OPSEC) для ряда восточноевропейских группировок.
- Solana как C2: вредоносный код пытается подключиться к нескольким Solana RPC-эндпойнтам, повышая устойчивость к отключениям инфраструктуры провайдера. Команды и URL извлекаются прямо из данных транзакций.
- Дальнейшие загрузки: после инициации на целевой машине в домашний каталог жертвы записывается полезная нагрузка Node.js, которая затем загружает зашифрованную JavaScript-полезную нагрузку с URL, указанных в транзакции Solana.
- Целевой сбор данных: конечная полезная нагрузка ориентирована на кражу конфиденциальной информации, в частности данных расширений браузера, связанных с криптовалютными кошельками.
«Наиболее тревожной особенностью вредоносного ПО является использование блокчейна Solana в качестве канала управления (C2), что делает инструкции неизменяемыми и устойчивыми к цензуре».
Кому угрожает кампания
Целями злоумышленников становятся проекты на базе Python — от веб-приложений на Django до проектов машинного обучения. В первую очередь пострадают проекты с широким распространением и высоким доверием, где малейшее изменение кода может распространиться дальше через цепочку поставок (supply chain).
Показатели компрометации и признаки заражения
Пользователям и администраторам рекомендуется искать следующие признаки присутствия вредоносного кода:
- Неожиданные изменения в
setup.py,main.pyи других скриптах, вызывающих выполнение внешнего кода. - Вставки кода с последовательностями декодирования base64, вызовами zlib или операциями XOR со статическими ключами.
- Строки или обращения к Solana RPC-эндпойнтам или к URL, которые могут извлекаться из транзакций в сети Solana.
- Появление файлов или процессов Node.js в домашнем каталоге пользователя, особенно при отсутствии явного основания для их присутствия.
- Необычные коммиты в репозитории, где сохраняются метаданные старых коммитов, но код явно изменён.
- Неожиданная активность расширений разработческих сред (Visual Studio) и расширений Cursor.
- Жалобы пользователей на пропажу средств из криптовалютных кошельков или некорректная работа расширений кошельков.
Рекомендации по защите и реагированию
- Немедленно отозвать и регенерировать все GitHub-токены, которые могли находиться на заражённых машинах; включить двухфакторную аутентификацию (2FA) для всех учётных записей.
- Проверить и при необходимости откатить изменения в критичных файлах репозиториев (например,
setup.py,main.py) и проследить цепочку коммитов на предмет подмены метаданных. - Обновить и просканировать рабочие станции разработчиков средствами EDR/AV, особенно те, где используется Visual Studio или расширение Cursor. Рассмотреть полную переустановку dev-среды после очистки.
- Проверить домашние каталоги пользователей на присутствие подозрительных Node.js-файлов и следов загрузки JavaScript-полезных нагрузок по URL из транзакций.
- Ограничить и мониторить доступ к секретам и ключам (ключи API, приватные ключи), применить принцип минимальных привилегий; хранить секреты в защищённых хранилищах (secret managers).
- Произвести аудит и уведомить сообщества/пользователей затронутых репозиториев; при обнаружении компрометации — выложить соответствующие advisories и рекомендации по откату и проверке.
- Мониторить сетевую активность на предмет попыток подключения к Solana RPC-эндпойнтам и аномальных исходящих запросов.
Почему это опасно для цепочек поставок ПО
Использование блокчейна как канала C2 и подмена легитимных коммитов повышают устойчивость и скрытность атак. Злоумышленники получают преимущества по трём ключевым направлениям:
- Устойчивость инфраструктуры: Solana-транзакции нельзя просто «отключить», а множественные RPC-эндпойнты обеспечивают избыточность.
- Скрытность и доверие: сохранение метаданных коммитов позволяет вредоносным изменениям выглядеть как легитимные обновления.
- Фокус на криптографии: сбор данных расширений браузеров, отвечающих за криптокошельки, напрямую влияет на финансовые потери пострадавших.
Заключение
Кампания ForceMemo демонстрирует эволюцию тактик киберпреступников: сочетание атак на разработческую среду, подмены кода в репозиториях и инновационного применения блокчейн-инфраструктуры как C2 делает такие операции особенно опасными для экосистемы open source и цепочек поставок ПО. Исследователи безопасности продолжают анализ, и всем разработчикам, владельцам репозиториев и операторам инфраструктуры рекомендуется срочно проверить свои окружения и внедрить описанные меры защиты.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.
