Edge「仕様」撤回、起動時のパスワード平文展開を修正へ

Edge「仕様」撤回、起動時のパスワード平文展開を修正へ

「仕様だ」と突っぱねていたMicrosoftが、わずか2週間で姿勢を変えた。Edgeが起動時に保存パスワードをすべて平文でメモリに展開する挙動を、次回アップデートから廃止する。


2週間で覆った「仕様」回答

Microsoftが、Edgeブラウザの保存パスワード処理を変更している。起動時に全パスワードを復号化してプロセスメモリに常駐させる挙動を、次回の更新から取り止める。同社が当初「仕様(by design)」と回答していた挙動だ。

経緯は短い。ノルウェーのセキュリティ研究者、トム・ヨラン・ソンステビセター・ロニング(Tom Jøran Sønstebyseter Rønning)が4月29日、Palo Alto Networks Norway主催のイベント「BigBiteOfTech」で、Edgeの挙動を公開した。EdgeはChromiumベースのブラウザだが、テストした他のChromium系ブラウザとは違い、Edgeだけが起動した瞬間に保存済みパスワードを全件復号し、セッション中ずっと平文でメモリに保持する。

ロニング氏はこの挙動をMicrosoftに事前報告していた。同社からの回答は「仕様」。

『仕様』回答から方針転換まで、約2週間の経緯
  • 4月29日
    開示ノルウェーの研究者ロニング氏が、Palo Alto Networks Norway主催のイベントBigBiteOfTechで、Edgeが起動時に保存パスワードを全件復号する挙動を公開
  • 開示前
    回答Microsoftはロニング氏の事前報告に対し「仕様(by design)」と回答
  • 5月4日
    拡散ロニング氏が実証映像を公開、批判が拡大。GitHubで実証ツールEdgeSavedPasswordsDumperも公開
  • 5月上旬
    圧力セキュリティベンダー各社が「Edgeのパスワードマネージャから移行すべき」と公に推奨
  • 5月中旬
    転換Microsoftがスタンス変更を表明。Edgeセキュリティリードのガレス・エヴァンス氏が、Stable・Beta・Dev・Canary・Extended Stableの全チャンネルに修正を展開すると発表
  • 展開予定
    配布Edge Canaryには修正が反映済み。build 148以降の通常アップデートで他チャンネルにも展開
※ Microsoftは修正を「脆弱性パッチ」ではなく「多層防御の改善」と位置づけている

「仕様」のまま放置できなかった理由

5月4日、ロニング氏が実証映像を公開すると、批判が一気に広がった。Chromeはパスワードが必要になった瞬間にだけ復号する。App-Bound Encryption(アプリケーション束縛型の暗号化)で復号鍵をブラウザプロセスに紐づけ、他プロセスからの読み取りを防ぐ仕組みも備える。Edgeにはどちらの保護もない。保存した全クレデンシャルが、ユーザーがそのサイトを訪れていなくても、ブラウザを開いた瞬間にプロセスメモリに並ぶ。

Edge と Chrome のパスワード処理設計の対比
比較項目 Edge(修正前) Chrome
復号の
タイミング
起動時に
全件を一括復号
必要時のみ
その都度復号
メモリ上の
滞在時間
セッション中
常駐
使用直後に
消去
復号鍵の
プロセス紐付け
なし あり
(App-Bound
Encryption)
未訪問サイトの
パスワード
起動時から
平文で展開
展開されない
設計の
脅威モデル
ローカル攻撃は
モデル外と明記
ローカル攻撃にも
対抗する設計
※ Edgeの挙動は次回build 148以降のアップデートで全サポートチャンネルに修正が展開される

ロニング氏は実証ツール「EdgeSavedPasswordsDumper」をGitHubで公開している。

ツールは管理者権限なしでも動作するが、その場合は同一ユーザーが起動したEdgeプロセスにしかアクセスできない。管理者権限で実行すると、同じマシンの他ユーザーのEdgeプロセスのメモリも読み取れる。

(EdgeSavedPasswordsDumper、README)

ツールを管理者権限で動かせば、同じマシンにログイン中の他ユーザーのEdgeプロセスからもパスワードを抜き出せる。ターミナルサーバや仮想デスクトップ、共用ワークステーションのように複数ユーザーが同居する環境では、管理者権限を奪った攻撃者が全ユーザーの認証情報を一括で収穫できる。

ロニング氏自身はこれを「エクスプロイト」とは呼んでいない。メモリを読むには管理者権限が必要で、その権限があれば他の手段でもパスワードは取れる。問題視しているのは「使ってもいない全パスワードを起動時に復号して保持する」設計判断のほうだ。

Chromeは設計上、プロセスメモリを読むだけで保存済みパスワードを抜き出すことを、はるかに困難にしている。Edgeはそうなっていない。

(ロニング氏の投稿を要約)

「by design」から「defense-in-depth」へ

Microsoftの当初の回答は、技術的には筋が通っている。デバイスがすでに侵害されている前提のシナリオであり、Edgeの脅威モデル外である、と。事実、Edgeのパスワードマネージャ公式ドキュメントには、ローカル攻撃やマルウェアによる復号データへのアクセスは脅威モデルの外、と明記されている。

ブラウザがパスワードをメモリに読み込むのは、ユーザーが素早く安全にサインインできるようにするためです。これはアプリケーションの想定された機能です。

(Microsoft広報の当初の声明)

ただ、この立場は批判をかわせなかった。セキュリティ業界の議論が燃え広がり、ThreatLockerやProtonといったセキュリティベンダー各社が「Edgeのパスワードマネージャから移行すべき」と公に推奨した。

そしてMicrosoftは方針を変えた。Edgeのセキュリティリードを務めるガレス・エヴァンス(Gareth Evans)は、報告されたシナリオは既存の脅威モデル内に収まる(つまり脅威ではない)としつつ、それでも全サポートチャンネルに修正を展開すると表明した。Stable、Beta、Dev、Canary、そして企業向けのExtended Stableまでが対象だ。

修正はすでにEdge Canaryに入っており、build 148以降の通常アップデートで他チャンネルにも届く。

「想定通り」と「修正する」の同居

注目すべきは、Microsoftが「これは脆弱性ではない」というスタンスを崩していない点だ。修正の位置づけは多層防御(defense-in-depth)であって、脆弱性パッチではない。

この使い分けは、企業のセキュリティ広報としては合理的だ。「仕様」と認めた挙動を「脆弱性だった」と言い直すと、過去の判断が否定される。一方で「多層防御の改善」なら、過去の判断を保ったまま将来の挙動だけを変えられる。

ロニング氏の指摘の核心は、まさにそこだった。攻撃者がデバイスを掌握した時点で勝負はついている、という理屈は正しい。けれど、勝負がついた後にどれだけ広い被害が生まれるか、そのブラスト半径はアーキテクチャの選択で決まる。Chromeは選択していた。Edgeは選択していなかった。

Microsoftが今回の修正で認めたのは、結局のところその差だ。

残る問い

修正後のEdgeが具体的にどう動くかは、まだ詳細が公開されていない。Chromeのようなオンデマンド復号に切り替えるのか、ロード対象を訪問サイトに限定するのか、復号鍵をプロセスに紐づけるのか。エヴァンス氏のコメントは「メモリ上のパスワード露出を減らす実用的な一歩」と述べるにとどまっている。

ブラウザ内蔵パスワードマネージャという仕組みそのものへの疑問も残る。利便性と引き換えに、ユーザーは自分のクレデンシャルをブラウザに委ねている。その委ね先が、起動時に全部を平文で広げていた事実は、修正後も記憶される。

「仕様」と回答した瞬間に終わるはずだった話が、2週間で覆った。次に「仕様です」と返答が来たとき、それを信じる理由が一つ減った。


参照元

他参照

関連記事

この記事を共有する