Второго мая 2020 года эксперт по безопасности обнаружил уязвимость в приложениях, производных от Bitcoin, то есть Litecoin, Dogecoin и прочих. Уязвимость позволяла заставить пользователей подписать транзакцию с другим криптоактивом вместо того, который они хотели использовать.
При использовании данной уязвимости вредоносный кошелёк может создать видимость проведения транзакции с Dogecoin. В то же время, на самом деле, он будет подписывать транзакцию, к примеру, в биткойнах.
Как обстоят дела с проблемой сейчас?
Приложение Bitcoin версии 1.4.6 исправляет данную уязвимость для производных от Bitcoin приложений. Дата её релиза — 5 августа 2020 года. Новая версия получила важное изменение. Теперь если пользователь будет пытаться подписать транзакцию через путь вывода, который не соответствует криптоактиву в открытом приложении на аппаратном кошельке Ledger, он увидит предупреждение.
Как мне себя обезопасить?
Обновите приложение Bitcoin до версии 1.4.6 через вкладку «Мой Ledger» в Ledger Live. Благодаря этому также обновятся и все производные от Bitcoin-приложения. Поскольку данная уязвимость затрагивает исключительно производные от Bitcoin приложения, использовать другие приложения можно без каких-либо опасений.
Как работает программа «Баунти за баги»?
У Ledger есть программа «Баунти за баги». Она позволяет сторонним экспертам по безопасности сообщать об уязвимостях продукции Legder. Вот что происходит, когда эксперт сообщает о потенциальной уязвимости на адрес электронной почты bounty@ledger.fr. Прежде всего, команда отдела безопасности подтверждает факт получения письма и устанавливает 90-дневный дедлайн. Далее начинается изучение проблемы. Если её наличие подтверждается, тогда:
- Команда разработчиков сделает всё возможное, чтобы исправить уязвимость в течение 90 дней. 90-дневный дедлайн — стандарт внутри индустрии, который изначально установили представители команды Google Project Zero.
- Как только наступает дедлайн, исследователь может поделиться собственными выводами по ситуации.
- Если же проблема устранена быстрее, а команды исследователей безопасности и безопасности в целом достигли договорённости, раскрыть детали можно до 90-дневного срока.
На протяжении этих 90 дней команда безопасности сообщает о своих действиях представителям других подразделений Ledger: разработки, тестирования и прочих сфер. Это помогает разработать и проверить патч, который ликвидирует уязвимость. Одновременно с этим формируется «Бюллетень безопасности Ledger». Он позволяет поделиться техническими деталями произошедшего со сторонними экспертами по безопасности. Вдобавок он по сути публично фиксирует проблемы безопасности, о которых сообщается в рамках программы «Баунти за баги».
Вознаграждение исследователю безопасности будет выплачено сразу после выпуска новой версии приложения или прошивки. Вместе с этим будет опубликован «Бюллетень безопасности Ledger», а исследователь безопасности будет вправе публиковать собственные выводы по ситуации.
Какие проблемы могут возникнуть с этой уязвимостью?
К сожалению, в данном случае нам не удалось соблюсти крайний срок раскрытия информации. Это побудило эксперта безопасности опубликовать материал в блоге на своём веб-сайте до того, как исправление уязвимости стало доступным для пользователей.
Если не считать другие решаемые в то же время проблемы, внутренние обсуждения для поиска выхода из ситуации и связь с остальными группами инженеров заняли больше времени, чем планировалось. Из-за этого новая версия приложения Bitcoin была выпущена после установленного дедлайна. Последний составляет 90 дней с момента сообщения об уязвимости.
Неточности в коммуникации помешали решить проблему быстрее. Исследователь отправил личное сообщение в Twitter, которое не попалось на глаза инженерам по безопасности. Единственный действенный метод связи со всей командой безопасности — электронный адрес bounty@ledger.fr.
Что такое уязвимость?
Кошельки Ledger Nano S и Nano X иерархически детерминированы (ИД). Это значит, что они могут выводить различные криптографические части информации из одного сида в мнемонической фразе, которую пользователи записывают на своём листе с фразой восстановления. Некоторые из этих данных необходимы для подписи криптовалютных транзакций.
Обычно каждое приложение ограничено собственным ИД-путём. К примеру, приложение Zcoin может использовать только свой путь вывода (m/44'/136’/). Выводить ключи через путь вывода Dogecoin (m/44'/3'/) оно не в состоянии. Это ограничение для путей вывода не было актуальным для приложения Bitcoin и его производных приложений, что позволяло производным от Bitcoin приложениям (типа Litecoin) попросту выводить публичные ключи или подписывать Биткойн-транзакции.
Если злоумышленник установил вредоносное ПО на компьютер или смартфон жертвы, он может обмануть её. В таком случае по сути владелец устройства подпишет транзакцию с Биткойном не через приложение Bitcoin на своём Ledger Nano S/X, а через приложение альткойна.
Данная уязвимость не даёт злоумышленникам извлекать из устройств Ledger какие-то важные данные по типу приватных ключей, необходимых для подписи транзакций. Её также нельзя использовать для обхода аутентификации по ПИН-коду. А значит, в итоге устройство по-прежнему является безопасным.
Дополнительные технические детали доступны в Бюллетене безопасности Ledger 014: «Чрезмерные разрешения путей вывода в приложениях, производных от Bitcoin».
Почему вместо блокировки таких транзакций отображается лишь предупреждение?
Если бы подобные транзакции блокировались, это привело бы к потере средств многими нашими пользователями. В целом это известная проблема отрасли, спровоцированная структурой ранних форков Биткойна. В данном случае транзакции нельзя отличить из-за наличия устройства для подписи транзакций без интернет-подключения.
Моё устройство Ledger показывает предупреждение о необычном пути вывода или подписи. Что это значит?
Данное предупреждение значит, что запущенное вами приложение кошелька не использует правильный путь вывода, связанный с активным в данный момент приложением криптоактива. Прежде чем подписывать транзакцию, убедитесь в корректности пути вывода.
Обновление приложения Bitcoin до версии 1.4.6 устраняет уязвимость для производных от Bitcoin приложений. При этом пользователи Ledger Live не заметят никаких визуальных изменений.
Новое сообщение «Путь вывода отличается» означает, что экспорт публичных ключей для производного от Bitcoin приложения не учитывает тип криптоактива в приложении. Таким же образом, при подписи транзакции отображается новое сообщение «Путь вывода отличается. Отмените, если сомневаетесь».
При этом пользователи сторонних кошельков по типу Electrum могут увидеть предупреждение, даже если публичный ключ или запрос подписи исходит из правильного кошелька. Это происходит из-за того, что такие кошельки используют некорректный путь вывода. Хотя последние могут подходить для сети Биткойна. К сожалению, приложение на вашем устройстве Ledger никак не может подтвердить корректность пути вывода. В связи с этим мы рекомендуем разработчикам не только определить, но и подписать правильный путь вывода.