Злоумышленники скомпрометировали официальный GitHub-репозиторий проекта Injective Labs и опубликовали в реестре npm вредоносную версию SDK-пакета @injectivelabs/[email protected], предназначенную для кражи приватных ключей и мнемонических фраз криптовалютных кошельков. По данным исследователей из Socket, OX Security и StepSecurity, атака затронула в общей сложности 18 пакетов в области видимости @injectivelabs. Всем разработчикам, использующим эти библиотеки, необходимо немедленно обновиться до версии 1.20.23 и считать все ключи, обработанные через скомпрометированную версию, раскрытыми.
Механизм атаки и технические детали
Скомпрометированная версия 1.20.21 была опубликована 8 июля 2026 года. Как сообщают исследователи из Socket, вредоносный код был внесён в официальный репозиторий через коммиты от аккаунта разработчика с устоявшейся историей контрибуций в проект. По данным StepSecurity, публикация вредоносного релиза была осуществлена через собственный доверенный пайплайн репозитория на основе OIDC (trusted-publisher), что позволило обойти стандартные механизмы контроля.
Бэкдор был реализован через модификацию легитимных функций генерации приватных ключей. В код была внедрена функция trackKeyDerivation(), замаскированная под сбор анонимизированной телеметрии для оптимизации SDK. Согласно описанию в коде, функция якобы «отслеживала методы деривации ключей и паттерны тайминга для выявления узких мест производительности». В действительности в неё передавались маркер метода генерации ключа и сам чувствительный материал — данные, достаточные для полного восстановления приватного ключа на стороне атакующего.
Принципиальная особенность вредоноса — отказ от использования npm lifecycle-скриптов. Код не активировался на этапе установки пакета, а срабатывал только при непосредственном использовании функциональности библиотеки разработчиком. Как отметили в OX Security, вредоносная логика перехватывала мнемонические фразы каждый раз, когда легитимный пользователь создавал кошелёк или обращался к функциям чтения мнемоник.
Механизм эксфильтрации
Для снижения количества исходящих запросов и уменьшения вероятности обнаружения вредонос накапливал перехваченные данные деривации ключей в очередь на протяжении двухсекундного окна, после чего отправлял их единым HTTPS POST-запросом на внешний сервер. Домен для эксфильтрации был подобран так, чтобы имитировать легитимную инфраструктуру Injective:
- Домен эксфильтрации: testnet.archival.chain.grpc-web.injective[.]network
Масштаб компрометации
Атака не ограничилась основным SDK-пакетом. По данным исследователей, злоумышленник опубликовал версию 1.20.21 для 17 дополнительных пакетов в области видимости @injectivelabs, которые зависели от вредоносной версии SDK и жёстко фиксировали её версию. Это создало угрозу транзитивной компрометации — разработчики, не устанавливавшие основной SDK напрямую, могли получить вредоносный код через зависимости. Затронутые пакеты:
- @injectivelabs/utils
- @injectivelabs/networks
- @injectivelabs/ts-types
- @injectivelabs/exceptions
- @injectivelabs/wallet-base
- @injectivelabs/wallet-core
- @injectivelabs/wallet-cosmos
- @injectivelabs/wallet-private-key
- @injectivelabs/wallet-evm
- @injectivelabs/wallet-trezor
- @injectivelabs/wallet-cosmostation
- @injectivelabs/wallet-ledger
- @injectivelabs/wallet-wallet-connect
- @injectivelabs/wallet-magic
- @injectivelabs/wallet-strategy
- @injectivelabs/wallet-turnkey
- @injectivelabs/wallet-cosmos-strategy
Версия 1.20.21 основного пакета была помечена как deprecated в реестре npm. Однако на момент публикации исследований артефакты релиза оставались доступны для скачивания на GitHub.
Оценка воздействия
Данный инцидент представляет высокую степень опасности по нескольким причинам. Во-первых, атака была направлена на цепочку поставок криптовалютного проекта, где компрометация приватных ключей ведёт к прямым и необратимым финансовым потерям. Во-вторых, использование доверенного пайплайна публикации и аккаунта с легитимной историей контрибуций значительно затрудняло обнаружение. В-третьих, охват 18 пакетов с транзитивными зависимостями многократно расширял поверхность атаки.
Наибольшему риску подвержены разработчики децентрализованных приложений на базе Injective Protocol, а также любые проекты, использующие перечисленные пакеты в своих зависимостях. Стоит отметить, что на момент подготовки материала формальный отчёт об инциденте от Injective Labs или официальный бюллетень безопасности npm не были опубликованы — информация основана на анализе независимых исследовательских команд.
Рекомендации по реагированию
- Немедленно обновите все пакеты @injectivelabs до версии 1.20.23 или более поздней.
- Проверьте транзитивные зависимости: выполните аудит дерева зависимостей проекта на наличие любого из 18 скомпрометированных пакетов версии 1.20.21.
- Ротация ключей: любой приватный ключ или мнемоническая фраза, которые были сгенерированы или обработаны через скомпрометированную версию, должны считаться раскрытыми. Переведите средства на новые кошельки с заново сгенерированными ключами.
- Проверьте сетевую активность: проанализируйте логи на предмет исходящих HTTPS-соединений к домену testnet.archival.chain.grpc-web.injective[.]network.
- Зафиксируйте версии зависимостей с использованием lock-файлов и рассмотрите внедрение инструментов мониторинга цепочки поставок, таких как Socket или StepSecurity, для обнаружения аномальных изменений в пакетах.
Этот инцидент демонстрирует растущую эффективность атак на цепочку поставок через компрометацию доверенных пайплайнов публикации. Разработчикам, работающим с криптовалютной инфраструктурой, следует приоритизировать проверку зависимостей на версию 1.20.21 любого из 18 затронутых пакетов @injectivelabs, выполнить ротацию всех потенциально скомпрометированных ключей и перевести средства до того, как злоумышленники воспользуются похищенным материалом.