ブラウザ拡張機能ウォレットの解説

·6 分で読める·SSP Editorial Team 著
サンドボックスと 2-of-2 署名の錠で守られたブラウザ拡張機能ウォレットのイラスト

ブラウザ拡張機能ウォレットとは、あなたのウェブブラウザ — Chrome、Firefox、Brave、Edge — の中で動く小さなプログラムで、あなたの暗号資産の鍵を保管します。インストールの仕方は広告ブロッカーと同じで、ブラウザの拡張機能ストアからワンクリックです。入れてしまえば、アドレスバーの隣にウォレットのアイコンが並び、暗号資産を扱う必要のあるウェブサイトを訪れるたびに使える状態になります。

このガイドでは、この種のウォレットが実際にどう動くのか、そのセキュリティモデルはどのようなものか、そして本当のリスクはどこにあるのかを説明します。ウォレットがまったく初めてなら、まず暗号ウォレットとは何かを読み、次にソフトウェアウォレットとハードウェアウォレットのより広い比較を読んでください。本記事はブラウザベースの種類に特化して掘り下げます。

「拡張機能」とは実際には何か

ブラウザの拡張機能とは、ブラウザに機能を追加するソフトウェアです。ブラウザがホストプログラムであり、拡張機能はホストがその中で動くことを許した客人です。拡張機能はあなたが訪れるウェブページを読んだり変更したり、独自のポップアップウィンドウを表示したり、あなたのコンピューターにデータを保存したりできます。その力こそが拡張機能ウォレットを便利にしているもの — そして、お金を預ける前にあなたが理解しておくべきものです。

拡張機能ウォレットはその力を三つの仕事に使います。あなたの鍵を保管します。ブラウザのローカルストレージに、たいていはパスワードで保護して。何かを承認する必要があるとき、ポップアップウィンドウを表示します。そして、インジェクションと呼ばれる技術を通じてウェブページと対話します。

インジェクションの仕組み

インジェクションとは、あなたが開くすべてのウェブページに、ウォレットが小さなコード片を置くことを意味します。ウォレットが、あなたの訪れる各サイトのテーブルに電話を置いていく、と考えてください。あるウェブサイトが暗号資産で何かをしたいとき — あなたのウォレットに接続する、残高を表示する、トランザクションの送信を求める — それはその電話を取り上げてリクエストを出します。

あなたのウォレットはそのリクエストを受け取りますが、黙って動くことはありません。ポップアップウィンドウを開いてあなたに尋ねます。「このサイトが接続したがっています。」「このサイトが 0.2 ETH を送るトランザクションへの署名を求めています。」あなたが承認をクリックするまで、何も動きません。ウェブサイトは頼むことができ、同意できるのはあなただけです。この承認のステップは、どんなブラウザウォレットを使ううえでも最も重要な習慣です。クリックする前にポップアップを読みましょう。

この設計こそが、分散型アプリケーション — dApp、つまりブロックチェーン上で動くウェブサイト — を、追加のソフトウェアなしに普通のブラウザタブから直接動かせるようにしているものです。本当に便利です。しかしウォレットがすべてのページから到達できるため、セキュリティを語るとき、すべてのページもまたこの絵の一部になります。

攻撃対象領域

攻撃対象領域」とは、何かが攻撃されうるすべての場所を指す素朴な言葉です。玄関、裏口、開いた窓は、すべて家の攻撃対象領域の一部です。ブラウザウォレットにもいくつかあります。

悪意のある、または侵害されたウェブページ。 ウォレットはすべてのサイトに注入されるため、敵対的なサイトはウォレットにリクエストを送れます。ウォレットはそれでも先にあなたに尋ねるので、悪意のあるページが単独で資金を動かすことはできません。しかし、紛らわしいリクエストを作り上げ、あなたが読まずに承認することを期待することはできます。

フィッシング dApp。 フィッシングサイトとは、本物そっくりに見せるために作られた偽物です。人気の取引所や NFT マーケットプレイスの模倣は、あなたに「ウォレットを検証して」と求め、実際にはそれを空にするトランザクションを提示するかもしれ���せん。ポップアップは何をするかについて正直です。嘘をついたのは、なぜそうするかについてウェブサイトのほうです。

広すぎる権限。 どんな拡張機能をインストールするときも、ブラウザはそれが何にアクセスできるかを一覧表示します。多くのウォレットはすべてのウェブサイト上のデータを読み書きする権限を求めます — どこにでも注入するためにそれが必要だからです。その代償は、到達範囲の広いウォレットは、いつか自分に向けられたとき、より大きな獲物になるということです。

サプライチェーンのリスク。 これは微妙なものです。サプライチェーン攻撃が狙うのはあなたではなく、あなたが依存している何かです。現代のソフトウェアは、依存関係と呼ばれる何百もの小さなオープンソースの構成部品から組み立てられます。攻撃者がそうした構成部品の一つに悪いコードを忍び込ませれば — 汚染された依存関係 — あるいは拡張機能の新バージョンをあなたのブラウザに届ける更新を乗っ取れば、悪意のあるコードはあなたがすでに信頼しているチャネルを通って届きます。あなたは安全な拡張機能をインストールしました。後の更新、またはその中に埋め込まれた部品は、そうではありませんでした。

ブラウザ拡張機能がどう作られ守られているかを、より深く、ベンダーに偏らずに見るには、Mozilla の MDN ウェブ拡張機能ドキュメントが権威ある参照先であり、OWASP プロジェクトは上記のウェブ脅威に関する一般的なガイダンスを公開しています。

SSP はどうリスクを減らすか

これらはどれも、ブラウザウォレットを使うのが安全でないという意味ではありません。よく作られたものは、攻撃対象領域が存在しないふりをするのではなく、それを想定して計画する必要があるという意味です。SSP はこれを二つの具体的な方法で行います。

LavaMoat のランタイムサンドボックス化。 サンドボックスとは、何かがシステムの残りに手を伸ばせないまま動ける、囲われた空間のことです — 本物の砂場が砂を一か所にとどめるのと同じように。LavaMoat はその考えを、あの何百もの依存関係に適用します。各依存関係は、本当に必要なものだけにアクセスできる、自分専用の封印された区画の中で動きます。ですから、汚染された依存関係がサプライチェーン攻撃で本当に入り込んだとしても、それは閉じ込められます。区画の壁が許さないので、ウォレットを越えてこっそりあなたの鍵に手を伸ばすことはできません。攻撃は壊滅的なものになる代わりに封じ込められます。これについては、ニュースルームの記事LavaMoat が SSP にやってくるで詳しく扱っています。

2-of-2 の設計。 これがより大きな構造的な保護です。ほとんどのブラウザウォレットは鍵の全体を保管します — 悪いポップアップを承認すれば資金は消えます。SSP は署名を二つのデバイスに分けます。ブラウザ拡張機能が一つの鍵を保管し、あなたの電話の SSP Key アプリが二つ目を保管します。トランザクションは両方が署名したときにのみ有効です。拡張機能だけでは、コイン一枚すら動かせません。

これは計算をまったく変えます。たとえ悪意のあるページが拡張機能をだましても、たとえ侵害された更新がそこに届いても、攻撃者が握るのは必要な二つの鍵のうち一つだけです。あなたの電話 — 別個のデバイスで、トランザクションの詳細をあなたに見せる別個の画面を持つ — がそれでも承認しなければなりません。普通のブラウザウォレットを空にしてしまう攻撃は、越えられない壁の前で行き詰まります。

では、ブラウザウォレットは安全か?

ブラウザウォレットは、二つのことが真であるとき、日常使いに十分安全です。ウォレットが上記の失敗を封じ込めるように作られていること、そしてあなたが承認ポップアップを反射ではなく本物の決定として扱うことです。拡張機能は公式ストアからのみインストールし、信頼するブラウザでウォレットを単独に保ち、サイトが何かに署名するよう求めるたびにペースを落としてください。

ブラウザウォレットの最大の弱点 — 忙しく、インターネットにつながったブラウザの中で生きていること — は現実です。SSP の答えはそれを無視することではなく、ブラウザが侵害されうると想定し、それを生き延びられるものにすることです。LavaMoat が悪い依存関係を封じ込め、2-of-2 の設計は、拡張機能だけでは資金を失うのに決して十分でないことを意味します。このシリーズの次回、モバイル暗号ウォレットは、その組み合わせのもう半分 — 共同署名しなければならない電話 — を見ていきます。

この記事をシェアする

関連記事