Как взламывали Trezor

Как взламывали Trezor

Kim Zetter

В начале 2018 года Дэн Райх и его друг решили потратить 50 000 долларов в биткойнах на партию токенов Theta, новой криптовалюты, которая тогда стоила всего 21 цент за штуку. Сначала они держали токены на бирже, базирующейся в Китае, но в течение нескольких недель широкомасштабное подавление криптовалюты китайским правительством означало, что вскоре они потеряют доступ к бирже, поэтому им пришлось перевести все на аппаратный кошелек. Райх и его друг выбрали аппаратный кошелек Trezor One, установили PIN-код, а потом занялись жизнью и забыли об этом.

К концу того же года токен упал менее чем на четверть своей стоимости, снова поднялся, а затем снова рухнул. Райх решил, что хочет обналичить деньги, но его друг потерял бумагу, на которой он написал PIN-код, и не мог вспомнить цифры. Они пытались угадать то, что, по их мнению, было четырехзначным PIN-кодом (на самом деле это было пять), но после каждой неудачной попытки кошелек удваивал время ожидания, прежде чем они могли угадать снова. После 16 попыток данные в кошельке автоматически удалятся . Дойдя до дюжины попыток, они остановились, боясь идти дальше.

Райх сдался и мысленно списал деньги. Он был готов терпеть убытки — пока цена снова не начала расти.

С минимума около 12 000 долларов стоимость их токенов начала стремительно расти. К концу 2020 года он будет стоить более 400 000 долларов, а на короткое время превысит 3 миллиона долларов. Без ПИН-кода попасть в кошелек было бы сложно, но возможно. И поскольку на кону потенциально миллионы людей, Райх и его друг поклялись найти путь внутрь.


Единственный способ владеть криптовалютой в блокчейне — это единолично владеть закрытым ключом, связанным с блоком валюты, но управление этими ключами с самого начала было сложной задачей, иногда с высокими ставками. Вы не можете продать или потратить свою валюту без ключа (или строки слов, используемой для получения ключа, также называемой начальным числом), но если кто-то еще получит ее, он сможет получить ваши монеты в одной анонимной транзакции из во всем мире. Вы можете хранить свой ключ в программном кошельке на сервере службы обмена или в программном кошельке на своем компьютере или мобильном телефоне, но они уязвимы для удаленной атаки, если кто-то в Интернете сможет получить ваш ключ.

Аппаратные кошельки размером с USB-накопитель предназначены для решения этой проблемы, сохраняя ключ локально, вне Интернета, и подписывая транзакции внутри защищенного кошелька, когда вы вставляете устройство в компьютер и вводите PIN-код. Но если вы забыли PIN-код и не записали ключ, вам, как правило, не повезло, и вы больше не можете получить доступ к своей валюте в блокчейне.

Это случается чаще, чем вы думаете. По оценкам компании Chainalysis, занимающейся данными о криптовалюте, более 3,7 миллиона биткойнов на сумму 66,5 миллиарда долларов, вероятно, будут потеряны для владельцев. Валюта может быть утеряна по многим причинам: компьютер или телефон, на котором хранится программный кошелек, украдены или вышли из строя, и кошелек невозможно восстановить; владелец нечаянно выбрасывает свой аппаратный кошелек; или владелец забывает свой PIN-код или умирает, не передав его членам семьи.

Поскольку в 2020 году стоимость их недоступных токенов быстро росла, Райх и его друг отчаянно пытались взломать свой кошелек. Они искали в Интернете, пока не нашли выступление на конференции 2018 года трех экспертов по оборудованию, которые нашли способ получить доступ к ключу в кошельке Trezor, не зная PIN-кода. Инженеры отказались им помочь, но это дало Райху надежду.

«По крайней мере, мы знали, что это возможно, и имели некоторое представление о том, как это можно сделать», — говорит Райх.

Затем они нашли финансиста в Швейцарии, который утверждал, что у него есть партнеры во Франции, способные взломать бумажник в лаборатории. Но была одна загвоздка: Райх не мог знать их имен и не мог пойти в лабораторию. Ему придется передать свой бумажник финансисту в Швейцарии, а тот отнесет его своим французским коллегам. Это была безумная идея с большим риском, но Райх и его друг были в отчаянии.

COVID и блокировки замедлили их планы в 2020 году, но в феврале 2021 года, когда стоимость их токенов теперь составляла 2,5 миллиона долларов, Райх планировал полететь в Европу, когда внезапно они нашли лучший вариант: аппаратный хакер из США по имени Джо Гранд. .

Гранд — инженер-электрик и изобретатель , который занимается взломом аппаратных средств с 10 лет. Известный под хакерским псевдонимом «Kingpin», он был частью знаменитого хакерского коллектива L0pht, который в 1998 году свидетельствовал в Сенате США об уязвимости, которая могла использоваться, чтобы отключить Интернет или позволить спецслужбам следить за трафиком . В 2008 году он был одним из организаторов шоу «Prototype This» на канале Discovery и в настоящее время преподает взлом оборудования организациям и компаниям, которые проектируют сложные системы и хотят понять, как хакеры могут атаковать их продукты.

Райх, сам инженер-электрик, владеющий компанией-разработчиком программного обеспечения, имел лучшую способность, чем большинство, оценить, есть ли у Гранда навыки, чтобы осуществить взлом. После единственного разговора он понял, что они нашли нужного человека. «Я помню, как подумал: «Вау, это, пожалуй, один из самых ярких инженеров-электриков, которых я когда-либо встречал», — вспоминает он.

Гранд, у которого есть специализированная лаборатория на заднем дворе его семьи в Портленде, купил несколько кошельков, идентичных тому, что принадлежал Райху и его другу, и установил на них ту же версию прошивки. Затем он провел три месяца, проводя исследования и атакуя свои тренировочные кошельки с помощью различных методов. Они договорились, что Райх, живущий в Нью-Джерси, не полетит в Портленд со своим кошельком, пока Гранду не удастся взломать три кошелька, используя ту же технику.

«Если он что-то напортачил, был хороший шанс, что это никогда не удастся восстановить», — говорит Райх.

К счастью для Гранда, у него были предыдущие исследования, которыми он мог руководствоваться. В 2017 году 15-летний хакер из Великобритании по имени Салим Рашид разработал метод для успешной разблокировки кошелька Trezor, принадлежащего техническому журналисту Марку Фрауэнфельдеру, и помог ему разблокировать 30 000 долларов в биткойнах .

Рашид обнаружил, что когда кошелек Trezor был включен, он делал копию PIN-кода и ключа, которые хранились в защищенной флэш-памяти кошелька, и помещал эту копию в оперативную память. Уязвимость в кошельке позволила ему перевести кошелек в режим обновления прошивки и установить на устройство собственный неавторизованный код, что позволило ему прочитать PIN-код и ключ там, где они находились в оперативной памяти. Но установка его кода привела к тому, что PIN-код и ключ, хранящиеся в долговременной флэш-памяти, были стерты, и в оперативной памяти осталась только копия. Это сделало эту технику рискованной для Гранда; если он непреднамеренно сотрет ОЗУ до того, как сможет прочитать данные, ключ будет невосстановим.

В любом случае, с тех пор Trezor изменил свои кошельки, так что PIN-код и ключ, которые были скопированы в ОЗУ во время загрузки, были стерты из ОЗУ, когда устройство было переведено в режим обновления прошивки.

Поэтому Гранд вместо этого обратился к методу, использованному в выступлении на конференции 2018 года , который Райх также исследовал ранее. Исследователи в этом случае обнаружили, что, несмотря на то, что Trezor удалил PIN-код и ключ, которые были скопированы в ОЗУ во время загрузки, PIN-код и ключ отображались в ОЗУ на другом этапе. Они обнаружили, что в какой-то момент во время режима обновления прошивки PIN-код и ключ временно перемещались в ОЗУ — чтобы новая прошивка не перезаписывала PIN-код и ключ — а затем возвращались во флэш-память после установки прошивки. Поэтому они разработали метод, получивший название «неудачный кошелек». В этой атаке использовался метод внедрения ошибок, также известный как сбой, чтобы подорвать безопасность, защищающую ОЗУ, и позволить им прочитать PIN-код и ключ, когда они ненадолго находились в ОЗУ.

Установка Гранда для взлома кошелька Trezor, показанная в его видео , включая ChipWhisperer CW 1200 , PhyWhisperer-USB и отладочный зонд J-Link .



Для микроконтроллера, используемого в кошельках Trezor, доступно три уровня безопасности — RDP2, самый безопасный, который не позволяет вам читать оперативную память, и RDP1 и RDP0, которые позволяют. Кошельки Trezor настроены на использование RDP2, чтобы, помимо прочего, предотвратить чтение оперативной памяти.

Но, выполнив атаку с внедрением ошибок на чип, которая влияет на напряжение, подаваемое на микроконтроллер, команда wallet.fail обнаружила, что может понизить уровень безопасности с RDP2 до RDP1. Затем они могли принудительно перевести кошелек в режим обновления прошивки, отправив PIN-код и ключ в оперативную память, и прочитать их. Это было похоже на атаку Рашида, за исключением того, что внедрение ошибки дало им доступ к оперативной памяти без необходимости использования кода.

Эта техника была отличной для исследовательского проекта, но рискованной для кошелька Райха. Поскольку PIN-код и ключ были перемещены в оперативную память во время обновления прошивки, а не просто скопированы, в этот период в кошельке была только одна версия. Сделайте что-нибудь не так, и Гранд может случайно стереть оперативную память вместе с ключом и PIN-кодом. Как бы то ни было, каждый раз, когда он ломал свои тренировочные кошельки, они зависали.

Но, пытаясь решить проблему, Гранд наткнулся на лучшее решение. Он обнаружил, что в версии прошивки, установленной на кошельке Райха, ключ и PIN-код по-прежнему копировались в оперативную память при включении устройства. Если Гранд сбоит в устройстве в нужный момент, он может понизить уровень безопасности до RDP1 и прочитать оперативную память. И поскольку ключ и PIN-код были просто скопированы в ОЗУ в этот момент, а не перемещены, в отличие от сценария wallet.fail, это означало, что они все еще существовали во флэш-памяти, если Grand непреднамеренно стер ОЗУ. Это было гораздо более безопасное решение, элегантно заимствованное из обеих предыдущих атак.

Единственная проблема заключалась в том, что для сбоя требовались тысячи попыток — многократное включение кошелька и использование разных параметров для изменения напряжения на микроконтроллере каждый раз, в попытке поймать точный момент, который позволил бы ему понизить безопасность микроконтроллера. Использование автоматизированного скрипта заняло от трех до четырех часов, и не было никакой гарантии, что он сработает на кошельке Райха, даже если он сработает на тренировочных кошельках. Райх сравнил мучительное ожидание с высиживанием засады.

Гранд разработал свою программу так, что если и когда сбой сработает, его компьютер выкрикнет: «Взломайте планету!» — отсылка к фильму « Хакеры » 1995 года . Когда в мае прошлого года пришло время заняться настоящим взломом, Райх улетел в Портленд на два дня. Первый день они потратили на то, чтобы все настроить — они сняли взлом с профессиональной командой , — а на следующий день Гранд запустил свой сценарий.

Затем они ждали. И подождал еще. Затем они съели пиццу и подождали еще немного.

Спустя почти три с половиной часа компьютер наконец закричал: «Взломайте планету!» На экране Гранда он увидел ключ и пятизначный PIN-код. Райх и его друг стали богаче на 2 миллиона долларов.

Он немедленно снял токены Theta со своего счета и отправил Гранду процент от добычи за его услуги.

Это был захватывающий момент для Гранда — и не только из-за денег, которые стояли на кону. «Это придало мне сил… и помогло решить, что мне делать со своими навыками», — говорит он.

С мая прошлого года он разговаривает с другими людьми, которые потеряли доступ к своим средствам, в надежде помочь большему количеству людей взломать свои кошельки. Это включает в себя Джеймса Хауэллса из Уэльса, который в 2013 году непреднамеренно выбросил свой аппаратный кошелек в мусорное ведро и потерял доступ к биткойнам, которые сейчас стоят полмиллиарда долларов. Он годами пытался убедить местный совет разрешить ему копаться на свалке. Городские власти отслеживают, где зарыт жилой мусор, и сказали ему, что есть большая вероятность, что они могут определить место, где может быть его бумажник, но до сих пор отказывали ему в просьбе.

Гранд также разговаривал с кем-то, чей кошелек находится на сломанном телефоне, для чего потребуются методы судебно-медицинской экспертизы, и с парой, которая потеряла пароль к программному кошельку, хранящемуся на их компьютере.

Но Гранд не хочет просто взламывать кошельки — он также хочет сделать их более безопасными. Он планирует сообщать об обнаруженных им уязвимостях поставщику, когда они будут исправлены, чтобы ими не могли воспользоваться преступники или другие лица, которые могут завладеть кошельком владельца. Означает ли это, что в какой-то момент у него закончатся уязвимости для взлома?

Гранд так не думает. Всегда будут люди со старыми непропатченными версиями прошивки в своих кошельках — как Райх — и он уверен, что новые устройства по-прежнему будут уязвимы по-разному, даже если они будут пропатчены.

«Это зависит от дизайна, но при наличии достаточного количества времени, усилий и ресурсов взломать можно все», — отмечает он.

Trezor уже исправил часть проблемы, которую Grand использовал в более поздних версиях своей прошивки. Кошельки больше не копируют и не перемещают ключ и PIN-код в оперативную память. Павол Руснак, соучредитель и технический директор SatoshiLabs, которая производит кошельки Trezor, сказал, что теперь хранит их в защищенной части флэш-памяти, на которую не влияют обновления прошивки.

Но основная проблема с чипом, допускающим внесение ошибок, все еще существует и может быть устранена только производителем чипа — что производитель отказался сделать — или путем использования более безопасного чипа. Руснак говорит, что его команда исследовала последний вариант, но более безопасные чипы обычно требуют от поставщиков подписания соглашения о неразглашении, против чего выступает его команда. Trezor использует программное обеспечение с открытым исходным кодом для обеспечения прозрачности, и когда команда Rusnak обнаружила недостаток в одном защищенном чипе, который они рассматривали для использования, производитель чипов призвал NDA, чтобы они не говорили об этом.

Это означает, что кошельки Trezor могут оставаться уязвимыми для других методов взлома. Grand уже работает над одним новым методом взлома микроконтроллера STM32, используемого в кошельках. Он будет работать даже на кошельках с самой новой, более защищенной прошивкой. Однако он говорит, что не будет раскрывать подробности публично, потому что последствия выходят за рамки кошельков.

«STM32 используется в миллиардах устройств по всему миру», — говорит он, и обнаруженную им проблему нельзя исправить. «Что и прекрасно, и страшно».

My Telegram: https://t.me/deeptrd
My trade:
https://app.aivia.io/ranking/136?A=VA9GZqD97a


Report Page