Как экран и подпись могли разойтись
Аппаратный кошелёк принимает от компьютера команды APDU. Приложение разбирает команду, показывает адрес, сумму и другие параметры на доверенном экране, а затем ждёт решения пользователя. Ответ компьютеру отправляется только после подтверждения или отказа, поэтому часть состояния операции должна сохраняться в памяти приложения всё время просмотра.
Бюллетень Ledger LSB 023 описывает окно между показом и ответом. Слой ввода-вывода Secure SDK мог принять следующую APDU-команду, хотя предыдущая ещё ожидала решения. Если обработчик приложения не проверял своё состояние на каждом асинхронном входе, новая команда могла перезаписать хранящиеся параметры. Экран при этом продолжал показывать прежнюю операцию, а подтверждение использовало уже изменённый контекст.
Ledger классифицирует дефект как состояние гонки между проверкой и использованием данных. Это нарушало ключевое обещание аппаратного кошелька: подпись должна соответствовать тому, что пользователь увидел и одобрил на самом устройстве. Приватный ключ или seed-фраза при этом не раскрывались; риск состоял в получении корректной криптографической подписи для другой операции.
Какие условия требовались для атаки
Удалённого доступа к Ledger было недостаточно. Злоумышленнику требовался контроль над обменом APDU с подключённым устройством: его могла дать вредоносная или скомпрометированная программа-кошелёк, страница с доступом через WebHID или WebUSB либо вредоносное ПО на компьютере. Пользователь также должен был открыть затронутое приложение и подтвердить показанную операцию.
Реальный результат зависел от конкретной команды и проверок внутри приложения. Бюллетень не утверждает, что любая установленная программа позволяла подписать произвольную транзакцию: приложения с полными проверками состояния отклоняли наложенные команды. Ledger связывает риск с приложениями, собранными на уязвимой ветке SDK и не закрывшими все асинхронные входы самостоятельно.
По данным Ledger Donjon, признаков эксплуатации против пользователей не обнаружено. Это важно отличать от лабораторной воспроизводимости: отсутствие известных краж не отменяет дефект доверенного отображения, но и не подтверждает массовый компромисс устройств. Операционная система и прошивка устройства, согласно бюллетеню, не были источником ошибки.
Почему фигурируют версии 1.22.2 и 1.22.3
Исправление выпускалось в два этапа. Сначала Ledger усилила отдельные приложения: каждый асинхронный обработчик должен проверять состояние и отклонять новую команду, пока пользователь рассматривает предыдущую. Первым таким релизом стала версия Ethereum app 1.22.2. Затем Secure SDK 26.6.1 добавил общий блокирующий механизм до передачи команды приложению; 21 августа приложения пересобрали на исправленной версии SDK.
Версия 1.22.2 относится именно к классу рассинхронизации из LSB 023. Однако следующий релиз Ethereum app 1.22.3 закрыл отдельные проблемы, включая возможность принять ERC-20 approve вместо перевода в swap-потоке. Поэтому установка 1.22.2 отвечает только на один бюллетень, а практический минимальный ориентир на момент публикации — 1.22.3 или более новая доступная версия.
Хронология на публичной странице GitHub может отличаться от внутренней даты публикации, указанной Ledger Donjon: релиз 1.22.2 отображается там от 24 августа, тогда как бюллетень называет 13 августа датой первой публикации и проверки исправлений. Для владельца это расхождение не меняет действие: нужно брать актуальную подписанную версию через официальный Ledger Wallet, ранее известный как Ledger Live.
Что проверить владельцу устройства
Обновление одной прошивки не гарантирует устранение проблемы, потому что исправленный код поставляется внутри приложений. В официальном менеджере приложений нужно обновить Ethereum app минимум до 1.22.3 и установить обновления для других используемых блокчейнов. После установки версию следует сверить на самом устройстве, а не только в интерфейсе компьютера.
До обновления не стоит подтверждать операции через незнакомые сайты или неофициальные программы. Но и после него доверенный экран остаётся последней проверкой: адрес, актив, сумма и тип разрешения должны соответствовать намерению пользователя. Предложение ввести seed-фразу на сайте или компьютере не имеет отношения к обновлению приложений и является отдельным признаком мошенничества.
Разработчикам сторонних приложений Ledger Donjon рекомендует проверить все асинхронные обработчики и пересобрать их на Secure SDK 26.6.1 или новее. Пользователю же не требуется разбираться в APDU: достаточно обновлять и прошивку, и установленные приложения из официального источника, проверять версии на устройстве и не подтверждать транзакцию, если экран не позволяет однозначно понять её результат.