Bitcoinのデリバティブ(金融派生商品)における派生経路の脆弱性

2020年5月2日、セキュリティ研究者が、Bitcoinの派生アプリ(Litecoin、Dogecoinなど)に脆弱性があり、ユーザーが取引したいコインとは別のコインで取引に署名するように仕向けられる可能性があることを報告しました。

この脆弱性を利用し、悪意のあるウォレットの騙しの行為として、ユーザーが実際にはBitcoin取引に署名しているのにもかかわらず、Dogecoinの取引を行うふりをすることが可能な場合があります。

現在の状況は?

Bitcoinアプリのバージョン1.4.6は、Bitcoinの派生アプリの問題を修正し、2020年8月5日にリリースされます。このバージョンでは、ユーザーがアドレスを要求したり、Ledgerハードウェアウォレット上で開かれているコインアプリケーションに属していない派生パスで取引に署名しようとすると、警告が表示されます。

自分を守る方法は?

Ledger LiveのMy Ledgerから、Bitcoinアプリをバージョン1.4.6にアップデートします。これにより、すべてのBitcoin派生アプリが自動的にアップデートされます。これは、Bitcoin派生アプリ特有の問題であるため、他のアプリは問題なくご使用を継続いただけます。

バグバウンティ制度の機能とは?

Ledgerは、Bug Bounty Program(バグバウンティ制度)を開始しました。その目標は、外部のセキュリティリサーチャーがLedger製品の脆弱性を報告できるようにすることです。基本的には、セキュリティ研究者が bounty@ledger.fr のメールアドレスへ潜在的な脆弱性を報告すると、次のような手順を踏みます。まず、セキュリティチームがメールの受信を確認し、90日間の期限を設定します。問題の調査が開始され、確認が取れた場合は、次のことを意味します。

  • 担当するチームは、90日以内に問題を解決するために最善を尽くします。この90日という期限は、当初はGoogle Project Zeroで設定されたものですが、現在では業界全体で共通しています。
  • 期限になると、研究者は研究成果を発表することができます。
  • 問題が早期に修正され、セキュリティ研究者とセキュリティチームの間で相互に合意が得られれば、90日の期限前に開示が行われる可能性があります。

この90日間で、セキュリティチームはLedgerの他のチーム(エンジニアリングチームやテストチームなど)と連携し、脆弱性を修正するパッチの開発とレビューを行います。その間に( Ledger セキュリテイ告示)が作成され、技術的な詳細を外部のセキュリティ研究者と共有し、バグバウンティ制度を通じて報告されたセキュリティ問題を公的に追跡します。

アプリやファームウェアの新バージョンが公開されると、セキュリティ研究者に謝礼が支払われ、セキュリティ速報が公開されるため、セキュリティ研究者は自分の調査結果を公表することができます。

この脆弱性のどこに問題があったのか?

今回のケースでの反省点は、公開期限を守らなかったために、修正プログラムがユーザーに提供される前にセキュリティ研究者が自身のウェブサイトでブログ記事を公開してしまったことです。

また、他の問題も同時に処理されていたため、適切な修正方法を見つけるための社内議論や他のエンジニアリングチームとの調整に予想以上の時間がかかりました。これにより、予定されていた(脆弱性の報告から90日後とされていた)期限を過ぎても、Bitcoinアプリの新バージョンが公開されていました。

ミスコミュニケーションにより、問題の早期解決には至ることはありませんでした。報告者がTwitterのDMメッセージを送りましたが、ほとんどのセキュリティエンジニアが、そのチェックを見落としていました。bounty@ledger.fr のメールアドレスが、セキュリティチーム全体に届く唯一の手段です。

脆弱性とは?

Ledger Nano SとNano Xは、 階層構造の決定性を持つ(HD)ウォレットです。これは、ユーザーがリカバリーシートに書き込む24単語のリカバリーフレーズから得られる1つのシードから、異なる暗号化された秘密を導き出すことができることを意味しています。これらの秘密の一部は、暗号資産取引の署名に使用されます。

各アプリケーションは、通常、それぞれのHDパスに制限されています。例えばZcoinアプリは、独自の導出パス(m/44'/136'/)の使用が許可されており、Dogecoinの導出パス(m/44'/3'/)で鍵を導出することはできません。このパスの制限は、Bitcoinアプリとそのデリバティブのほとんどには適用されず、Bitcoinのデリバティブ(例:Litecoin)を使って公開鍵を導き出したり、Bitcoinの取引に署名していました。

詐欺をもくろむ攻撃者は、被害者のコンピューターやスマートフォンにマルウェアをインストールすることができ、ユーザーがBitcoinアプリではなく、Ledger Nano S/Xアプリのアルトコインアプリを使ってBitcoin取引の署名を受け入れるように騙すことができます。

この脆弱性により、攻撃者はLedgerデバイスから取引の署名に使用される秘密鍵などの秘密を引き出すことはできません。また、攻撃者がPINコードの認証を回避することもできません。そのため、物理的なデバイスのセキュリティは損なわれません。

より詳細な技術情報は、Ledgerセキュリティ告示 014に掲載されています。 Bitcoin派生パスのパスは導出を黙認しています

そのような取引をブロックするのではなく、警告表示にした理由は?

これらの取引が遮断されると、多くのユーザーの資金がロックされてしまいます。これは、初期のBitcoinフォークの構造に起因する業界全体の問題であり、オフラインの署名デバイスの視点では、取引の区別はできません。

Ledgerデバイスに、異常な派生パスまたは異常な記号パスとの警告表示が出るが、この意味は?

この警告が表示された場合、使用しているウォレットアプリケーションが、開いたコインアプリケーションにリンクされた正しい導出パスを使用していないことを意味します。このような取引に署名する前に、派生パスが正しいかどうかを確認してください。

Bitcoinアプリをバージョン1.4.6にアップデートすることで、すべてのビットコイン派生アプリの脆弱性が修正されます。このバージョンでは、Ledger Liveユーザーに目に見える変更はありません。

新しいメッセージ 「The derivation path is unusual(異なる派生パスです)」との表示は、アプリケーションのコインタイプと異なるBitcoin派生商品の公開鍵をエクスポートする際に表示されます。同様に、新しいメッセージで、「異なるサインパスです。不明なサインパスであれば拒否してください」の表示は、取引に署名するときに表示されます。 

ただし、Electrumなどのサードパーティ製ウォレットのユーザーは、公開鍵や署名の要求が正規のウォレットから来たものであっても、この警告メッセージが表示されることがあります。これは、これらのウォレットが誤った導出経路を使用していることが原因であり、Bitcoinにも有効な場合があります。残念ながら、Ledgerデバイスのアプリでは、このパスが正当なものかどうかを見分ける方法はありません。開発者は、正しい派生パスで導出・署名できるように取り組んでいます。

この記事は役に立ちましたか?