Французская компания Ledger, производящая одноименные аппаратные кошельки для хранения криптовалюты, всегда демонстрировала завидную уверенность в защищенности своей продукции. Механизм «криптографический аттестации», который используют продукты Ledger, якобы стопроцентно защищает пользователей от подделок, так как на кошельке может быть запущен только авторизованный код.
В 2015 году представители Ledger и вовсе утверждали, что атакующие ни за что не сумеют подменить или модифицировать прошивку аппаратных кошельков и пройти аттестацию, не зная приватного ключа. В связи с этим разработчики сообщали, что кошелек Ledger можно без опасений приобретать даже на eBay.
Однако заявления о полной безопасности продукции Ledger на этой неделе были поставлены под сомнение 15-летним подростком из Великобритании по имени Салим Рашид (Saleem Rashid). В своем личном блоге Рашид опубликовал подробный материал, посвященный компрометации устройств Ledger Nano S и Ledger Blue. Демонстрацию атаки можно увидеть ниже.
Исследователь описывает и демонстрирует в работе proof-of-concept эксплоит, позволивший ему установить на устройства незаметный бэкдор, объемом всего 300 байт. Атаку можно отнести к типу evil maid — «злая горничная», то есть атакующий должен иметь хотя бы беглый физический доступ к устройству, как горничная, убирающая номер в мотеле.
После компрометации и установки бэкдора устройство генерирует заранее заданные адреса кошельков и восстанавливает пароли таким образом, что они известны атакующему. В результате злоумышленник сможет осуществлять самые разные противозаконные действия, в том числе переадресовать любой платеж на собственный адрес.
Уязвимость, позволяющую скомпрометировать аппаратные кошельки, Рашид обнаружил еще в ноябре 2017 года и уведомил о проблеме разработчиков. Две недели назад представители Ledger выпустили патч для Nano S, причем директор по безопасности Ledger подчеркнул, что исправленная проблема не являлась критической, а атака не позволяла извлечь приватные ключи или seed. Также разработчики сообщают, что сроки выхода патча для Ledger Blue пока неизвестны, но заверяют, что бэкдор Рашида обнаруживается при подключении устройств Ledger к серверам компании (для загрузки приложений или обновления прошивки). Однако развернутый отчет исследователя, опубликованный после выхода исправления, доказал, что представители Ledger не совсем правы.
Рашид пишет, что еще не проверял, нейтрализует ли свежий патч для Nano S обнаруженную им проблему, но исследователь сомневается в том, что бэкдор нельзя будет адаптировать для работы с пропатченными кошельками. Дело в том, что проблема, найденная Рашидом, по сути, носит аппаратный характер.
Устройства Ledger Blue и Nano S укомплектованы микроконтроллерами ST31H320, производства компании STMicroelectronics. Именно с их помощью кошельки осуществляют вышеупомянутую криптографическую аттестацию, и компания называет этот компонент Secure Element. Но защищенный микроконтроллер не поддерживает дисплеи, USB-подключения и операции, требующие высокой пропускной способности. Из-за этого инженеры компании были вынуждены добавить устройствам еще один микроконтроллер, STM32F042K6, который служит сообразным прокси и носит название MCU.
MCU служит промежуточным звеном между «железом» кошелька и Secure Element, общаясь с USB-хостом, встроенным дисплеем, а также кнопками устройства. Бэкдор Рашида вынуждает MCU демонстрировать Secure Element исходную, "чистую" прошивку, тогда как на самом деле код злоумышленника заставляет MCU тайно осуществлять самые разные нелегитимные действия.
Работу Рашида уже изучили известные ИБ-эксперты, которые согласились с выводами молодого исследователя. Так, профессор криптографии из Университета Джонса Хопкинса, Мэтт Грин (Matt Green), дал следующий комментарий изданию ArsTechnica:
«[Разработчики] Ledger пытаются решить фундаментальную аппаратную проблему. Им нужно проверять прошивку, работающую на процессоре. Но их защищенный чип не способен увидеть код, запущенный на этом процессоре. Поэтому они вынуждены просить процессор предоставить собственный код! Но это замкнутый круг, так как данный процессор может работать с недобросовестным кодом, и следовательно, его ответам нельзя верить. Это все равно, что попросить человека, который может быть преступником, предоставить все данные о криминальном прошлом: система, построенная на доверии».