現在のWebブラウザは「インターネットを閲覧するための窓」という本来の役割を完全に逸脱している。巨大テクノロジー企業による果てしない機能拡張競争により、高度な画像編集ソフトウェアや本格的な統合開発環境(IDE)をも飲み込み、今や巨大な「仮想OS」として君臨している。その進化の強力な推進力となったのが、Webアプリケーションにローカルのファイルシステムへの直接アクセスを許可する「OPFS(Origin Private File System)」をはじめとする強力なAPI群である。しかし、この劇的な利便性の向上の代償として、堅牢であるはずの「サンドボックス(隔離環境)」の足元に、かつてない物理的な亀裂が走っている。

もし、たったひとつの悪意あるリンクを踏むだけで、ユーザーに一切の許可を求めることなく、裏で開いている銀行のサイトや、起動しているデスクトップアプリケーションのリストが完全に筒抜けになるとしたらどうだろうか。

オーストリアのグラーツ工科大学の研究チームは、まさにその悪夢を現実のものとする新たなサイドチャネル攻撃FROST(Fingerprinting Remotely using OPFS-based SSD Timing)」を発表した。同チームには、かつてCPUの歴史的脆弱性である「Meltdown」や「Spectre」の発見に貢献したダニエル・グルス(Daniel Gruss)博士も名を連ねている。彼らは、SSD(ソリッドステートドライブ)というハードウェアの物理的な「競合」をブラウザ内から極めて正確に測定し、AIの推論能力を用いて解析するという前代未聞のアプローチで、Webトラッキングの概念を根底から覆したのである。

AD

隔離の壁をすり抜ける。OPFSが招いた「ストレージの渋滞」

従来のサイドチャネル攻撃が成立するためには、OSの深部にアクセスする特権や、io_uringといった低レイヤーのAPIを叩けるネイティブアプリケーションのインストールが前提条件とされてきた。サンドボックス内で動作するブラウザのJavaScriptは権限が厳しく制限されており、ハードウェアの微細な挙動を直接監視することは不可能だと考えられていたからだ。FROSTは、この常識を標準的なJavaScriptとOPFSのみを用いて完全に打ち破る。

OPFSは、各ウェブサイトに対して完全に隔離された専用のファイルシステムを提供する仕組みである。ユーザーへの許可を求めるポップアップダイアログを一切出さずに、ブラウザのバックグラウンドで数GB規模のデータを永続的に保存できる。論理的には他のサイトやシステムのデータから完全に隔離されているが、データの最終的な保存先は、被害者のPCに搭載されている同一の物理SSDである。

SSD内部のコントローラは、NANDフラッシュメモリの寿命を延ばすために複雑なデータの再配置(ウェアレベリング)を常に行っている。ここで、複数のアプリケーションから同時に大量の読み書き要求(I/O)が発生すると、コントローラの処理能力やデータ転送帯域の限界により、不可避な「渋滞」が発生する。一本の細い通路を複数の荷台が同時に通ろうとしてつかえてしまう現象に似ている。FROSTは、この物理的な渋滞度合いを意図的に引き起こし、その遅延時間を計測することで、システム全体の活動状況を間接的に推測する。

frost-attack.webp
FROST攻撃の全体アーキテクチャ。攻撃者が仕掛けたサイトを開くと、OPFSを通じて巨大なファイルへのランダムアクセスが実行される。他のタブやアプリがSSDにアクセスした際に生じるI/O競合(遅延)の痕跡を抽出し、AIモデルで照合することで、ユーザーの背後のアクティビティを丸裸にする。(Credit: Graz University of Technology (2024).
https://hannesweissteiner.com/pdfs/frost.pdf)

物理法則をハックする。ページキャッシュの防波堤を決壊させる手法

SSDの渋滞を測定しようとする攻撃者の前に立ちはだかるのが、OSが提供する「ページキャッシュ(macOSにおけるUBC)」という巨大な防波堤だ。通常、一度読み込まれたデータは高速なメインメモリ(RAM)上に一時保存される。ブラウザが同じデータを再度読み込もうとした際、OSはSSDまでデータを取りに行かず、メモリ上のデータを即座に返す。これではSSDの遅延を測定することはできない。

FROSTはこの防波堤を、純粋な物理量の暴力で突破する。ブラウザの仕様上限(ChromeやSafariではディスク全体の最大60%まで利用可能)を利用し、システムのRAM容量を上回る数GBから数十GBに及ぶ巨大なダミーファイルをOPFS上に生成する。メモリ容量に収まりきらない巨大なデータを端から端まで4KBのブロック単位でランダムに読み込み続けることで、OSはデータのキャッシュを諦めざるを得なくなる。システム側からすれば、際限なく押し寄せる未知の荷物の処理に追われ、受付(RAM)を通さずに直接奥の倉庫(SSD)までデータを取りに行かせるしかなくなるのである。

さらに、ブラウザ側がサイドチャネル攻撃対策として実装している「タイマー精度の低下」という防御策に対しても、攻撃者はCross-Origin Opener Policy(COOP)およびCross-Origin Embedder Policy(COEP)のヘッダーを適切に設定して「クロスオリジン分離」を有効化することで、JavaScriptから高精度な時間計測用API(performance.now())にアクセスする権利を獲得し、ミリ秒以下の微小な遅延を正確に記録していく。

興味深いことに、この攻撃データの抽出速度(スループット)はOSのアーキテクチャによって明確な差異が生じる。研究チームの検証によれば、Linux環境ではユーザーが明示的に選択したファイル(最大564.66 bit/s)よりもOPFS(最大661.63 bit/s)を用いた方がスループットが高かったのに対し、macOSでは逆にユーザー選択ファイル(最大891.77 bit/s)がOPFS(最大719.27 bit/s)を上回った。これは、各OSがファイルシステムAPI経由の読み込みとOPFS経由の読み込みに対して、内部でどのような優先順位付け(スケジューリング)を行っているかの違いに起因していると推測される。攻撃者はこうしたOSごとの構造的な癖さえも計算に入れ、プラットフォームに最適化された手法でデータを抽出する。

AD

F1スコア95%の狙撃。AIが読み解く「I/Oの脈拍」

こうして取得された遅延のトレースデータは、人間の目には無意味なノイズの連続にしか見えない。突発的なシステム割り込みによる1ミリ秒以上の巨大なスパイクを取り除く前処理(全データの約0.1%を前後100サンプルの平均値で置換)を施した後、研究チームは画像認識などで実績のある畳み込みニューラルネットワーク(CNN)を解析に投入した。

YouTubeで動画を再生する際のバッファリング、Googleの検索結果の描画、あるいはSafariやデスクトップアプリの起動シーケンス。それぞれのソフトウェアは、固有の設計思想に基づいた特有のパターンでSSDにアクセスする。FROSTは、絶え間なく続く4KBのランダムリードのレイテンシに生じる微小な波形の違いを、アプリケーションごとの「指紋(シグネチャ)」として機械学習モデルに学習させた。

Apple M2チップ8GBのRAM、256GBのSSDを搭載したMac miniを用いた検証実験における数値は、極めて高い精度を示している。あらかじめ定義された50のウェブサイトを見分けるクローズドワールドのテストでは、F1スコア(適合率と再現率の調和平均)で88.95%という精度を記録した。未知のサイトを含むオープンワールドのテストにおいても86.95%を維持している。さらに、OS標準の電卓、マップ、Safariといったローカルアプリケーションの起動を検知するテストに至っては、95.83%という驚異的な的中率を叩き出した。

特筆すべきは、この攻撃が「ブラウザの壁」をいとも容易に越えるという事実だ。攻撃コードを埋め込んだ悪意あるタブをGoogle Chromeで開いたまま、被害者がSafariで別のサイトを閲覧した場合でも、ストレージ層という共通の物理基盤を介しているため、その行動は筒抜けになる。実際の通信速度(スループット)を測定したテストにおいて、攻撃者と被害者が異なるブラウザを使用するクロスブラウザ環境でのスループット低下は、同一ブラウザ間での攻撃と比較してわずか3.38%にとどまっている。

攻撃の属性 従来のサイドチャネル攻撃(io_uring等) FROST攻撃(OPFSベース)
実行環境 OSの特権モード、またはネイティブアプリ Webブラウザの1タブ(サンドボックス内)
ユーザー許可 インストールや明示的な特権の付与が必要 一切不要(リンクを開くだけでバックグラウンド実行)
ページキャッシュ回避 OSのシステムコール(O_DIRECT等)を直接利用 RAM容量を超える巨大ファイルを生成して物理的に押し出す
通信スループット (Linux) 938.61 bit/s 等(ネイティブ実装による) 最大 661.63 bit/s
通信スループット (macOS) - 最大 891.77 bit/s

利便性との不可避なトレードオフ。放置される構造的脅威

強大な監視能力を誇るFROSTにも、物理法則に起因する明確な弱点は存在する。成立条件としてシステムのRAMを凌駕する巨大なダミーファイルを生成し続ける必要があり、SSDの空き容量が数十GB単位で不自然に枯渇する。システムの挙動に敏感なユーザーであれば、ディスク容量の異常な減少から不審な動きに気づく余地が残されている。また、システムドライブとは物理的に独立したセカンダリSSD上で動くアプリケーションの挙動は、当然ながら検知できない。そして何より、悪意あるコードが動いているブラウザのタブを閉じさえすれば、監視の目は即座に断たれる。

しかし、業界全体のマクロな動向を俯瞰したとき、FROSTが突きつけた問いは極めて重い。サードパーティCookieの廃止が秒読みとなり、広告業界やデータブローカーが新たなトラッキング手法の開拓に血眼になっている現在、ブラウザの進化が生み出した正規の標準APIが、システム全体を見通す最強の監視ツールに転化する危険性を実証してしまったからだ。

グラーツ工科大学の研究チームは、Google、AppleMozillaといったブラウザベンダーに対して本脆弱性の詳細を報告している。だが、Googleのセキュリティチームは「フィンガープリンティング技術は、我々の定義するセキュリティ上の脆弱性には該当しない」として修正対応を見送った。Appleも「現時点では対応スコープ外である」とし、Mozillaも報告を受け取りながら具体的な緩和策の実装には至っていない。

とりわけGoogleの姿勢には、プラットフォーマーとしての根深い自己矛盾が露呈している。同社は「プライバシーサンドボックス」構想を掲げ、ユーザーのプライバシー保護を大義名分として従来のトラッキング手法を段階的に排除する姿勢を示している。その一方で、同社の巨大な広告ビジネスの収益基盤を支え、Webアプリケーションにおける覇権を揺るぎないものにするためには、OPFSのような強力で利便性の高いストレージAPIを推進し続けなければならない。表向きには強固なプライバシー保護を標榜しながら、根幹のアーキテクチャ部分では「ユーザーの行動を詳細に観測可能な抜け穴」を塞ぎきれない、あるいは意図的に放置せざるを得ないという構造的なジレンマに陥っている。

プラットフォーマーたちが直面しているのは、極限まで高められたWebアプリケーションの利便性と、ハードウェアレベルに根ざすセキュリティという残酷なトレードオフである。仮にOPFSのファイルサイズを一律に小容量へ制限したり、ファイルの作成や読み書きのたびにユーザーの明示的な許可を求める設計に変更したりすれば、クラウドベースの本格的な動画編集ツールや大容量のアセットを扱うブラウザゲームといった、豊かなWebエコシステムそのものが崩壊してしまう。利便性を損なわずに、物理的な副作用であるSSDの遅延を完全にマスキングする有効な手段は、現在のシステムアーキテクチャには存在しない。

FROSTは、ブラウザというソフトウェアの果てしない拡張が、巡り巡ってハードウェアの物理的制約を侵襲するという現代のコンピューティングアーキテクチャの構造的限界を見事に言語化してみせた。我々が「高機能でシームレスなWeb」という果実を謳歌し続ける限り、沈黙するSSDの奥底では、無数のトラッキングデータが今日も密かに抽出され続けている。