Хакери компрометираха GitHub хранилището на проекта Injective Labs SDK и го използваха за публикуване на зловреден пакет в Node Package Manager (npm), който краде частни ключове на портфейли за криптовалута и мнемонични фрази (seed phrases).
Компаниите за сигурност на приложения Socket, Ox Security и StepSecurity откриха атаката по веригата за доставки във версия 1.20.21 на пакета @injectivelabs/sdk-ts в npm.
Injective SDK е комплект за разработка на софтуер (SDK) на TypeScript/JavaScript за създаване на приложения върху блокчейна Injective – Layer-1 блокчейн, фокусиран върху децентрализирани финанси (DeFi), токенизирани активи и децентрализирани борси.
Пакетът има 50 000 седмични изтегляния в npm и се използва от разработчици, създаващи крипто портфейли, ботове за търговия, децентрализирани борси, DeFi приложения и платежни инструменти.
Според изследователите, нападателят е компрометирал GitHub акаунт, принадлежащ на легитимен сътрудник на проекта, и е направил първите подозрителни промени на 8 юни, като малко след това е публикувал зловредната версия на пакета.
Нападателят също така е публикувал версия 1.20.21 за още 17 пакета, свързани с проекта, като ги е обвързал с компрометираната версия на SDK.
Легитимният собственик на акаунта е открил компрометирането в рамките на минути, възстановил е промените и е публикувал чиста версия 1.20.23.
Въпреки това системи на разработчици, които са изтеглили зловредните пакети чрез актуализация или са ги използвали, вероятно са били компрометирани.
Socket съобщава, че зловредната версия на пакета е била изтеглена 310 пъти, преди да бъде маркирана като остаряла (deprecated), но не и премахната, а зловредните файлове от версията в GitHub все още са налични.
Изследователите също така отбелязват, че пакетът има 87 преки зависимости в npm и много вероятно множество допълнителни транзитивни зависимости. Доклад от Ox Security предупреждава, че тези 87 зависими пакета имат общ брой изтегляния от малко над 112 000.
Насочване към портфейли за криптовалута
Зловредният софтуер се активира, когато разработчиците използват SDK функции, които генерират или импортират ключове за портфейли, а не при самата инсталация.
След извикване на тези функции, зловредният софтуер прихваща пълната минимизирана фраза и частния ключ и кодира данните в base64. Цялата информация се изпраща чрез HTTP POST заявка към публична инфраструктурна точка на Injective Labs, за да изглежда трафикът легитимен.
StepSecurity съобщава, че зловредният код не е изпратил веднага откраднатите тайни, а вместо това е наредил на опашка множество ключове и фрази за две секунди, пакетирал ги е в заглавната част на HTTP заявката и ги е изпратил.
След това нападателите могат да използват фразата или частния ключ, за да прехвърлят портфейлите на жертвата на свои собствени устройства и да получат достъп, да използват или да прехвърлят техните дигитални активи.
Разработчиците, които подозират компрометиране, трябва да прехвърлят своята криптовалута в нови портфейли и да подменят всички тайни ключове и пароли в своята среда.