Ledger、署名フローに影響するEthereumアプリの脆弱性を修正
重要ポイント
- •この脆弱性は8月12日、LedgerのEthereumアプリ バージョン1.22.2で修正された。
- •悪意あるdAppはAPDUの競合状態を利用し、署名中にトランザクションデータをすり替える可能性があった。
- •この欠陥は、トランザクションの詳細をデバイス上で読める形にするためのLedgerのクリア署名フローに影響した。
- •Ledgerは、社内のセキュリティチームDonjonが外部の開示前に問題を発見し解決したと述べた。
- •この脆弱性に起因する資金損失の報告はない。

Ledgerは8月12日、Ethereumハードウェアウォレットアプリの脆弱性を静かに修正した。この脆弱性は、悪意ある分散型アプリケーション(dApp)が署名中に正当なトランザクションを有害なものにすり替える可能性があったものだ。修正はEthereumアプリのバージョン1.22.2に含まれていたが、セキュリティ研究者がこの問題に注目を集めるまで、同社は公にはほとんど語らなかった。
この欠陥はAPDUコマンドの競合状態(レースコンディション)に関わるもので、競合する命令が署名処理を妨げる順序でデバイスに到達しうるタイプの脆弱性だ。実際の影響として、ユーザーは少量のトークン送金を承認しているつもりで、実際には攻撃者が管理するアドレスへの無制限のトークン承認を許可していた可能性があった。
脆弱性の仕組み
APDUはApplication Protocol Data Unit(アプリケーションプロトコルデータユニット)の略で、コンピューター上のソフトウェアがLedgerデバイス内のセキュリティチップと通信するために使うフォーマットを指す。デバイスの画面に人が読める形でトランザクションの詳細を表示するLedgerの「クリア署名」フローでは、この競合状態により、2番目の悪意あるAPDUコマンドが割り込んで元のトランザクションデータを置き換えることが可能だった。
この攻撃には、その時間的窓を突く、侵害されたまたは悪意あるdAppが必要だった。信頼できる正当なアプリケーションを利用していたユーザーがこの問題にさらされることはなかった。
Ledgerの社内セキュリティチームであるDonjonは、外部の研究者がこの欠陥を特定する前に発見した。同社によると、DonjonはAI支援ツールを使って問題を発見し、解決したという。
パッチ後に続いた公開開示
パッチは8月12日にリリースされたが、セキュリティ勧告もブログ記事もXへの投稿もなかった。約10日間、修正はほとんど世間に知られないまま適用されていた。
状況が変わったのは8月21日から23日の間で、TestMachineという名で活動するセキュリティ研究者がこのバグを公開した。TestMachineはトランザクション置き換えのリスクと競合状態の仕組みを詳述し、大多数のLedgerユーザーがその存在すら知らず、まして修正済みであることを知らなかった脆弱性に注目を集めた。
報道によると、TestMachineはLedgerからの報奨金のオファーを辞退したという。
LedgerのCTO、Charles Guillemet氏はこの公開開示に反論し、恐怖を煽るものだと評した。Guillemet氏は、最新バージョンのEthereumアプリを実行しているユーザーはすでに保護されており、問題はTestMachineの開示前に対応済みだったと強調した。
クリア署名とより広い文脈
この脆弱性が注目されたのは、Ledgerのクリア署名フロー、すなわちブラインド署名のリスクを低減するために設けられた機能に影響したためだ。Ledgerは、ハードウェアウォレットでのトランザクションデータの表示方法を標準化するERC-7730標準に関するこれまでの取り組みを含め、クリア署名をデフォルトにすることに多大な投資を行ってきた。そのため本件は単一のバグ報告にとどまらない意味を持つ。ウォレットセキュリティ、トランザクションの可読性、そしてユーザーがリクエストを承認する前にデバイス上での署名を検証しやすくするという長年の取り組みが交差する位置にあるからだ。
この脆弱性による資金損失の報告は今のところない。Ledgerによると、パッチは外部からの通報が行われる前にDonjonが先制的に配備したという。Ethereumベースのワークフローでハードウェアウォレットを利用するユーザーと開発者にとって、この一件は、デバイスの基盤となるファームウェアが変更されていなくてもアプリの更新が重要である理由を浮き彫りにしている。
Ledgerユーザーにとっての即時の教訓はシンプルだ。まだの場合は、Ethereumアプリをバージョン1.22.2以降に更新することである。