Хакеры из КНДР научились незаметно подменять расширения в Chrome.

Северокорейские злоумышленники пытаются подменять расширение криптокошелька MetaMask прямо на компьютере жертвы, и в успешном сценарии это может выглядеть для пользователя незаметно. Технику описали в рамках кампании Contagious Interview, которую исследователи связывают с актором из КНДР. Основные цели — IT-специалисты и разработчики из криптовалютной, Web3 и ИИ-сферы.
Заражение обычно начинается с фиктивного технического собеседования. Кандидату предлагают выполнить тестовое задание и запустить NPM-пакет. Внутри оказывается вредоносный JavaScript, который связывается с управляющей инфраструктурой, подтверждает запуск маячком и подтягивает следующий этап. Далее на машину загружаются дополнительные компоненты, в том числе два JavaScript-модуля с разными задачами и Python-бэкдор InvisibleFerret, который эта кампания использует уже несколько лет.
Один из JavaScript-компонентов отвечает за поиск и эксфильтрацию данных: он методично обходит файловую систему по набору шаблонов и выкачивает файлы, которые могут содержать секреты, — от данных браузера и менеджеров паролей до файлов криптокошельков и ключей. Второй компонент работает как легковесный бэкдор и принимает команды с C2. В анализе отдельно отмечена команда, которая подгружает ещё один скрипт для манипуляций с расширениями Chromium-браузеров.
Дальше атакующие могут попытаться заменить MetaMask в Chrome или Brave на троянизированную сборку. Скрипт ищет установленный кошелёк в профилях браузера, скачивает архив с вредоносным расширением и подменяет содержимое каталога. Критическая часть атаки основана на модификации файлов Preferences и Secure Preferences: злоумышленники меняют настройки расширения, переключают его на загрузку из локальной папки, включают режим разработчика и подставляют значения MAC, которые Chrome использует для проверки целостности конфигурации на базе HMAC-SHA256. Конфиг с MAC приходит с сервера атакующих, а механизм генерации валидных значений под конкретную систему в исследовании остаётся невыясненным. Чтобы принудительно загрузить подменённый код, скрипт также удаляет каталоги, связанные с Service Worker, и завершает процесс браузера.
Если подмена проходит, модифицированный MetaMask продолжает выглядеть и работать как обычный, но при вводе пароля для разблокировки отправляет этот пароль и содержимое зашифрованного хранилища кошелька на сервер управления. В описанном образце для кражи достаточно минимальных правок: в две функции добавлено около 15 строк кода. Получив зашифрованное хранилище, злоумышленники могут расшифровать его офлайн, извлечь мнемоническую фразу восстановления и другие ключевые данные — и получить полный контроль над средствами.
При этом автор анализа отмечает, что воспроизвести подмену на актуальной версии Chrome не удалось: браузер удалил модифицированное расширение. Это может означать, что для успешной атаки нужны дополнительные условия, либо в Chrome уже появились меры, препятствующие именно такому приёму. Тем не менее цепочка остаётся опасной, поскольку кампания не ограничивается MetaMask и активно охотится за паролями, конфигами, приватными ключами, базами KeePass и данными Solana-кошельков. Разработчикам, особенно тем, кто получает тестовые задания в ходе найма, стоит с максимальной осторожностью относиться к любым NPM-пакетам из незнакомых источников и не запускать их на рабочей машине без изоляции.