Исследователи Socket насчитали 77 связанных расширений Firefox, из них 40 подтверждённо вредоносных. Они выдавали себя за OKX, Rabby Wallet и TronLink и перехватывали фразы восстановления. Кампания идёт с марта, а часть расширений попала в каталог безобидными утилитами и стала кошельками позже.
Коротко: как устроена кампания
Связь между расширениями установлена по повторному использованию кода — отсюда рабочее название «фабрика кражи кошельков».
Записи о подписи Mozilla для первых 59 разобранных версий охватывают период с девятого марта по третье августа, со всплесками в апреле и конце июля.
Кражи идут двумя путями: расширение либо подгружает поддельную страницу кошелька, либо несёт нужную логику прямо в себе.
В нескольких случаях использован изменённый код Rabby Wallet: он перехватывал фразу из двенадцати или двадцати четырёх слов при создании или импорте кошелька и отправлял связку ключей на заданные серверы — до того, как срабатывало локальное шифрование.
Что известно о масштабе
| Показатель | Значение |
|---|---|
| Связанных расширений | 77 |
| Подтверждённо вредоносных | 40 |
| Период подписей | 9 марта — 3 августа |
| Под кого маскировались | OKX, Rabby Wallet, TronLink и другие |
| Что крали | фразы восстановления, приватные ключи, учётные данные |
| Способ подмены | удалённый переключатель внутри подписанного расширения |
Часть расширений сначала появилась в каталоге как спортивные результаты или блокнот и лишь потом стала кошельком — под тем же идентификатором.
Почему проверка в каталоге здесь не сработала
Вот наблюдение, ради которого стоит присмотреться к механике переключения. Значение держали в стороннем облачном хранилище: пока флаг выключен, подписанное расширение показывает блокнот, а когда флаг меняют, то же расширение открывает интерфейс кошелька на стороннем хостинге и просит ввести фразу восстановления или приватный ключ.
Отсюда следует неприятное. Каталог проверяет и подписывает код в момент подачи — он отвечает, чем программа была тогда. А поведение задаётся не кодом, а внешним значением, которое меняют когда угодно и без новой проверки. Подпись остаётся действительной, идентификатор прежним, а отзывы и рейтинг расширение успевает набрать.
Значит, главный совет отрасли — ставить кошельки только из официального каталога — здесь не защищает: он отсеивает подделки, вредоносные изначально, и бессилен против ставших такими после одобрения. Проверяется момент подачи, а опасен момент использования.
Похожий по устройству случай мы разбирали сегодня: уязвимость Ledger подменяла транзакцию при подписи. Там тоже отказала не защита от обмана, а возможность убедиться в честности происходящего.
Каталог подтверждает, чем расширение было при подаче. Чем оно станет завтра, решает переключатель на чужом сервере.
Что делать владельцу кошелька
Проверить установленные расширения и удалить те, что ставились утилитами и сменили назначение. Совпадение названия с известным кошельком ничего не гарантирует.
Главное правило: настоящий кошелёк никогда не просит ввести фразу восстановления на веб-странице. Запрос импорта через открывшийся сайт — достаточный повод остановиться.
Если фраза вводилась в подозрительное расширение, средства нужно немедленно переводить на новый кошелёк с новой фразой: удалением расширения скомпрометированные ключи не чинятся. Как сделать резервную копию правильно, разобрано в материале про хранение резервной копии.
Для крупных сумм браузерное расширение — плохая среда. Схемы с мультиподписью и временными замками описаны в разборе хранения без доверия. Иногда производители успевают закрыть дыру заранее — так BitBox закрыл дыры в кошельках до атаки.
Чего в источниках нет
Не называется ни сумма похищенного, ни число пострадавших: оценок ущерба нет.
Не сообщается, сколько выявленных расширений уже удалено из каталога, а сколько доступно.
Не раскрыта и атрибуция: кто стоит за кампанией, не указано.
Частые вопросы
Сколько расширений Firefox оказались вредоносными?
Сорок подтверждённо вредоносных из 77 связанных между собой, по данным группы Socket.
Под какие кошельки они маскировались?
Под OKX, Rabby Wallet, TronLink и другие. В части случаев использован изменённый код Rabby Wallet.
Как именно крали фразу?
Перехватывало фразу из двенадцати или двадцати четырёх слов при создании или импорте кошелька и отправляло связку ключей на заданные серверы до локального шифрования.
Почему официальный каталог не помог?
Проверка и подпись относятся к моменту подачи, а поведение задавалось внешним значением, которое меняли удалённо — без новой проверки и с сохранением подписи.
Как понять, что расширение поддельное?
Настоящий кошелёк не просит вводить фразу восстановления на веб-странице. Насторожить должны смена назначения расширения и просьба импортировать кошелёк через сайт.
Что делать, если фраза уже введена?
Немедленно перевести средства на новый кошелёк с новой фразой: удаление расширения ключи не восстанавливает.
Источники
Материал подготовлен на основе исследования Socket с разбором кампании и публикаций The Hacker News и Bitdefender о механике кражи.
Обсуждение
Добавить комментарий