14 декабря был взломан фронт-энд нескольких децентрализованных приложений (dApps), использующих Ledger connector. Хакер, стоящий за атакой, похитил по меньшей мере $484000.
Ledger — это аппаратный кошелек, используемый многими представителями криптосообщества, а его библиотека Ledger connector — критически важный компонент, обеспечивающий взаимодействие между аппаратным кошельком и различными децентрализованными приложениями.
Когда разработчики создают приложения для Web3, они используют "connect kits" — набор средств разработки с открытым исходным кодом, чтобы их dApps-приложения могли подключаться к кошелькам пользователей. Эти наборы представляют собой готовые фрагменты кода, которые могут быть установлены в dApps без необходимости тратить время на написание кода. Набор для подключения Ledger Connect Kit — один из доступных вариантов для решения этой задачи.
Обычно такой готовый набор устанавливает через Node Package Manager (NPM). После создания сборки и загрузки ее в dApp, сайт будет содержать Ledger Connect Kit как часть своего кода и будет загружаться в браузер пользователя при каждом посещении сайта.
Так, 14 декабря 2023 года главный технический директор SushiSwap Мэтью Лилли сообщил что широко используемый Web3-коннектор от Ledger был взломан, и что атаке подверглись многочисленные децентрализованные приложения.
Тем, кто пользуется различными DEX, часто приходится одобрять (approval, апрувить) смарт-контракты токенов при свопах. Эта процедура разрешает приложению переводить средства с кошелька пользователя на кошелек площадки.
Вредоносный код, внедренный в Ledger Connect Kit, позволял хакеру (правильнее назвать его отличником по информатике) изменять пользовательские транзакции в процессе работы с такими dApps как Zapper, SushiSwap, Phantom, Balancer и Revoke[.]cash и заставить кошельки пользователей отображать запросы одобрения на отправку средств на адрес злоумышленника вместо нужного; или же запросы, состоящие из сложного для понимания кода, что вынуждало пользователя в замешательстве нажимать "подтвердить", не понимая, на что он соглашается.
Ончейн данные показывают, что жертвы атаки совершали очень крупные апрувы вредоносного смарт-контракта. Например, с Ethereum-адреса 0xAE49C1ad3cf1654C1B22a6Ee38dD5Bc4ae08fEF7 за одну транзакцию злоумышленник похитил более $10000 в USDC после одобрения транзакции жертвой.
После инцидента несколько протоколов, включая OpenSea и Lido Finance отключили библиотеку Ledger Connect Kit, а Tether, эмитент стейблкоина USDT, заморозил адрес злоумышленника. Изначально объем похищенных средств оценивался в $484000, но позже Web3 Blockaid (аналитических сервис) сообщил, что сумма выросла до $504000.
Как это стало возможным
Спустя почти три часа после инцидента компания Ledger признала наличие уязвимости в своем коде и заявила, что "удалила вредоносную версию Ledger Connect Kit", добавив, что "на замену вредоносному файлу высылается валидная версия". По мнению некоторых пользователей, уязвимость может существовать в других подобных программах, которые являются альтернативой Ledger connect-kit.
Леджер приписала эксплойт фишинговой атаке на бывшего сотрудника. Якобы, хакер взломал компьютера бывшего сотрудника компании, получив доступ к его учетной записи node package manager javascript (NPMJS), и загрузил вредоносное обновление в репозиторий Ledger Connect на GitHub. Хотя это напрямую не угрожало средствам пользователей, хранящимся на аппаратных кошельках, но оно могло подменять адрес получателя средств, которые отправлял пользователь.
Вредоносный код использовал протокол WalletConnect для перенаправления пользовательских средств на хакерский кошелек, и мог затронуть любого участника экосистемы Ethereum Virtual Machine (EVM), в том числе пользователей EVM-совместимых блокчейнов и кошельков (типа MetaMask), а также всех кто взаимодействовал с атакованными dApps.
Оправдываясь за инцидент, CEO компании Ledger Паскаль Готье (Pascal Gauthier) заявил, что взлом библиотеки был "единичным" и пообещал усилить контроль безопасности, назвав произошедшее "досадным случаем".
Гендиректор компании блокчейн-безопасности Cyvers Дедди Лавид, директор по технологиям Меир Долев и блокчейн-аналитик Хакал Унал пролили дополнительный свет на причины проблемы, указав, что она стала итогом трех отдельных упущений в компании Ledger:
- Слепая загрузка кода без привязки к конкретной версии и контрольной сумме.
- Не соблюдение "правила двух человек" при проверке и развертывании кода.
- Не отозванный у бывших сотрудников доступ к репозиториям компании.
Правило двух человек — это механизм контроля, предназначенный для достижения высокого уровня безопасности особо важных материалов или операций. Согласно этому правилу, доступ и действия требуют постоянного присутствия двух или более уполномоченных людей.
По данным Cyvers, следы хакера, создавшего смарт-контракты, которые использовались в атаке на пользователей ПО Леджера, помимо прочего засветились как минимум в 180 других инцидентах безопасности.
Как обезопасить себя
Избежать подобной атаки крайне сложно, поскольку кошельки не всегда дают пользователям четкую информацию о том, на что они соглашаются. Одна из практик безопасности, которая может помочь, — внимательно изучать каждое всплывающее уведомление о подтверждении или апруве транзакции, появляющееся во время использования бирж и площадок с WalletConnect. Однако, это может не помочь, если транзакция отображается в виде кода, который плохо читается или запутан.
Хотя инструменты Web3 в будущем могут позволить обнаруживать и предотвращать подобные атаки заранее, всей индустрии еще предстоит пройти долгий путь в решении этой проблемы.