仮想通貨をインターネットから隔離することで安全に管理することができるというのがハードウェアウォレットです。しかし、このハードウェアウォレットの暗証番号を忘れてしまい200万ドル(約2億3000万円)相当の仮想通貨を使えなくなってしまったという人物が登場しています。この「ハードウェアウォレットの暗証番号を忘れてしまう」というのは割と頻繁に起きる出来事なのですが、ハッカーの友人にこのハードウェアウォレットをハッキングしてもらう、という荒業で対処した事例が報告されています。
Cracking a $2 million crypto wallet – The Verge
https://www.theverge.com/2022/1/24/22898712/crypto-hardware-wallet-hacking-lost-bitcoin-ethereum-nft
2018年初頭、ダン・ライヒ氏とその友人はビットコインで別の仮想通貨であるシータ(Theta)トークンを5万ドル(約570万円)分購入します。当時、シータトークンは1つ当たりわずか21セント(約24円)であったため、ライヒ氏らは大量のシータトークンを入手することとなります。ライヒ氏らは中国に拠点を置く仮想通貨取引所にシータトークンを保持していましたが、数週間後に中国政府による仮想通貨の広範な取り締まりが始まることが明らかになったそうです。そのままでは取引所にアクセスすることができなくなり、シータトークンも扱うことができなくなってしまうため、ライヒ氏らは仮想通貨を通信から隔離された場所に保管するハードウェアウォレットにシータトークンを転送する必要性に迫られます。ライヒ氏らはTrezor製のハードウェアウォレットを購入し、暗証番号を設定し、シータトークンを転送。しかし、ライヒ氏らの私生活が忙しくなったため、ハードウェアウォレットの存在は完全に忘れ去られてしまったそうです。
しばらくした後、シータトークンを現金化したいと考えるようになったライヒ氏ですが、友人がハードウェアウォレットの暗証番号が書かれた紙を紛失したことが判明。当初、ライヒ氏らは4桁の暗証番号を設定したと考え、その数字を推測しようとしますが、失敗するたびにハードウェアウォレットに暗証番号を入力できるようになるまでの待ち時間が2倍に延長されていったそうです。また、暗証番号の入力に16回失敗すると、ハードウェアウォレット内のデータがすべて自動で削除されてしまう仕様になっていたため、ライヒ氏らはあてずっぽうで暗証番号を入力することを諦めます。
ハードウェアウォレットに保存されているシータトークンの価値は、最低時は1万2000ドル(約140万円)程度だったのですが、シータが値上がりを見せたため300万ドル(約340万円)まで高騰したこともあるとのこと。
ブロックチェーンで構築された仮想通貨を利用するには、秘密鍵を使う必要があります。秘密鍵あるいは秘密鍵を出力するために使用される単語の文字列(シード)なしでは、仮想通貨を販売・使用することはできません。ただし、秘密鍵を入手することができれば、1回の匿名トランザクションで仮想通貨を取得することが可能となってしまいます。秘密鍵は仮想通貨のソフトウェアウォレット上に保存することができますが、ソフトウェアウォレットはインターネット上に存在するため、リモート攻撃に対して脆弱であるという欠点を持っています。
それに対して、ライヒ氏らが使用したようなUSBメモリサイズのハードウェアウォレットは、秘密鍵をローカル上のデバイスにインターネットから隔離して保存することで、安全に仮想通貨を運用できるようになります。ただし、使用時に入力する暗証番号を忘れてしまった場合、ライヒ氏らのように仮想通貨を利用することができなくなってしまうという欠点があるわけです。
仮想通貨関連の調査企業であるChainalysisによると、秘密鍵を紛失したりソフトウェアウォレットが保存されているPCやスマートフォンを紛失したりすることで、仮想通貨にアクセスできなくなってしまうという事例は想像以上に多い模様。Chainalysisの推定では、665億ドル(約7兆6000億円)相当のビットコインが秘密鍵にアクセスできなくなったことで失われているそうです。
シータトークンの価値が急騰した2020年になって、ライヒ氏はハードウェアウォレットにアクセスするための方法を必死になって探します。2018年にTrezor製ハードウェアウォレットにアクセスする方法を発見したというハードウェア専門家の講演を発見し、ライヒ氏はこの専門家にアポイントメントを取りますが、同氏はライヒ氏を手伝うことを拒否したそうです。
その後、スイスの金融業者が「フランスにハードウェアウォレットをクラッキングできる知り合いがいる」と語ったそうです。しかし、この助けを借りるには「ハードウェアウォレットを金融業者に託し、フランスの知人の元まで運んでもらう」というリスクがありました。
その後、新型コロナウイルスのパンデミックが起きるなどしてハードウェアウォレットをクラッキングする計画がとん挫していたそうですが、突如より良い選択肢が登場します。その選択肢が「アメリカのハードウェアハッカーであるジョー・グランド氏を頼る」というものでした。
グランド氏は10歳のころからハードウェアハッカーとして活躍してきた人物で、著名なハッカー集団であるL0phtの一員であり、1998年に上院議会でとある脆弱性について説明したこともあります。
ソフトウェア開発企業を運営する電気技師でもあるライヒ氏は、グランド氏がハードウェアウォレットをクラッキングする能力を持っているとすぐ理解したそうで、一度会話した後に「うわー!彼は恐らく私が今まで出会った中で最も優秀なエンジニアだ」と感じたと説明しています。
ライヒ氏からハードウェアウォレットのクラッキングを依頼されたグランド氏は、同じ型番のハードウェアウォレットを複数購入。それから3カ月かけてハードウェアウォレットをクラッキングする方法を研究し、実験用に購入したものをクラッキングすることに成功。
グランド氏によると、ハードウェアウォレットをクラッキングすることにつながる先行研究がいくつか存在しており、2017年にイギリスのハードウェアハッカーであるSaleem Rashid氏が、テクノロジージャーナリストのMark Frauenfelder氏が所有するTrezor製のハードウェアウォレットをクラッキングした方法が参考になったとのこと。
Rashid氏はTrezor製のハードウェアウォレットが「ハードウェアウォレットの電源を入れると、セキュリティで保護されたフラッシュメモリ部分に保存されている暗証番号のコピーをメモリ(RAM)にコピーする」ことを発見。そこで、脆弱性を利用してハードウェアウォレットをファームウェア更新モードで起動し、独自に作成したコードをインストールすることで、RAM内の暗証番号を読み取ることに成功しています。ただし、この手法を真似る場合、データを読み取る前に間違ってRAMのデータを消してしまうと、暗証番号が永遠に失われてしまうこととなります。
また、Rashid氏がTrezor製のハードウェアウォレットをクラッキングする方法を公開したことで、Trezorはハードウェアウォレットの仕様を「起動時にRAMにコピーされる暗証番号を、ファームウェア更新モードになった際にRAMから削除する」ように変更しました。
そこで、グランド氏は2018年に発表された「wallet.fail」という手法に着目します。この手法は、Trezor製のハードウェアウォレットにある「起動時にRAMにコピーされた暗証番号を削除するにもかかわらず、別の段階で削除されたはずの暗証番号が復元されている」という仕様を突いた攻撃です。
Trezor製ハードウェアウォレットが搭載するマイクロコントローラーにはRAMを読み取れない最も安全な「RDP2」、RAMを読み取れる「RDP1」と「RDP0」という3つのセキュリティレベルが存在します。Trezor製ハードウェアウォレットでは、RDP2を利用することでRAM内の暗証番号が傍受される危険が防がれているわけですが、マイクロコントローラーに流れる電圧に影響を与えるチップに対してフォールトインジェクション攻撃を行うことで、セキュリティをRDP2からRDP1にダウングレードすることができるそうです。そのため、wallet.failはフォールトインジェクションを用いるという点を除けばRashid氏の編み出した攻撃方法によく似ています。
その後、グランド氏はライヒ氏のハードウェアウォレットにインストールされているファームウェアバージョンでは、ハードウェアウォレットの電源を入れた時に暗証番号がRAMにコピーされることを発見します。これは暗証番号をストレージからコピーしており、暗証番号のマスターキーはストレージに保存されたままであるということを意味します。つまり、もしもクラッキングを間違えてハードウェアウォレットのRAMを削除してしまっても、暗証番号はストレージに残ったままである、つまりは暗証番号が消えてしまうというリスクを限りなく低くしながらクラッキングに挑戦できるということです。
こうして、グランド氏は「wallet.fail」をベースにクラッキングを実行。約3時間半の施行の後、ついにハードウェアウォレットの暗証番号を読み取ることに成功。ライヒ氏らは「4桁の暗証番号を設定した」と記憶していたのは勘違いであり、実際には5桁の暗証番号が設定されていたそうです。
なお、Trezorはライヒ氏のハードウェアウォレットをグランド氏がクラッキングすることに成功したという報道を受け、「(クラッキングに使用された)脆弱性は既に修正されており、当社の新製品はすべて修正されたブートローダーで出荷されています」とツイートしています。
Hi, we just want to add that the vulnerability was already fixed, and all new devices are shipped with a fixed bootloader. Thanks to @saleemrash1d for his security audit. Learn more about our Security approach and responsible disclosure program here????https://t.co/pyV1Ya6X8b
— Trezor (@Trezor)
この記事のタイトルとURLをコピーする