ウェブブラウザでのメディアファイル呼び出しに関する脆弱性「Wavethrough」が見つかる
ウェブブラウザがオーディオファイルやビデオファイルを読み込むときの挙動を利用してユーザーが意図しないリクエストを送り込めるバグを、Google Chrome開発の手助け(Developer Advocate)をしているジェイク・アーチボールド氏が発見しました。影響を受けるブラウザはFirefoxとMicrosoft Edgeで、すでに両ブラウザとも対応を終えているとのこと。アーチボールド氏はこの脆弱性に対して「Wavethrough」と名前を付けています。
I discovered a browser bug - JakeArchibald.com
https://jakearchibald.com/2018/i-discovered-a-browser-bug/
Google Developer Discovers a Critical Bug in Modern Web Browsers
https://thehackernews.com/2018/06/browser-cross-origin-vulnerability.html
アーチボールド氏によると、「Wavathrough」はウェブブラウザがオーディオファイルやビデオファイルなどのクロスオリジンリクエストを扱う際に存在するとのこと。
現在のブラウザはセキュリティ対策が厳しくなっていて、読み込んだページと出所が同じであることがはっきりしているデータだけ読み込むようになっています。ところが、別のドメインに置かれたオーディオファイルやビデオファイルを読み込むことに関しては、この制限がかからないような仕組みになっていました。
また、ブラウザには巨大なメディアファイルを読み込むにあたって一時停止やリジュームなどの利便性を高めるために、一部分だけのレスポンスを受け付ける仕組みが備わっています。レスポンスを束ねれば、もとの1つのリソースになるともいえます。
アーチボールド氏が発見したのは、この2つの仕組みを悪用することで、複数のレスポンスの中に、メディアファイルに見せかけた悪意あるファイルを混ぜて読み込ませることが可能というものです。
これを実際のサイトの動きで見せたデモンストレーション映像も公開されています。
Firefox content-length hack - YouTube
まず読み込んだのは「jewel-chair.glitch.me/exploit.html」というページ。
このページにはオーディオファイルが埋め込まれているので、当該WAVファイル(type欄がx-wav)が読み込まれていますが、なぜか無関係なはずの「google.com」が4行目と6行目に登場。これはそれぞれ、3行目のURLと5行目のURLから転送されたもの。
読み込まれたファイルサイズは、ページ上の表記では「29767バイト(29.07KB)」と書かれていますが、Size欄を見るとWAVファイル自体のサイズは44バイトで、残りは4行目、転送先であるgoogle.comからの29.03KBだったことがわかります。
アーチボールド氏によると、この種の転送処理はChromeやSafariではすでに拒否するポリシーとなっていて、影響があったのはFirefoxとEdgeだったとのこと。ただし、アーチボールド氏が連絡を入れたことでパッチが当てられ、いずれのブラウザも最新版では対応済みになっています。
・関連記事
ブラウザはどのようにコンテンツをレンダリングしているのか? - GIGAZINE
Windows Updateで「ブラウザで特定サイトを開くだけでシステムをハック可能」なMicrosoft Graphicsの脆弱性など修正 - GIGAZINE
特定の16文字をアドレスバーに入力するとGoogle Chromeがクラッシュするバグが見つかる - GIGAZINE
Intelのプロセッサチップに根本的な設計上の欠陥が発覚、各OSにアップデートの必要性 - GIGAZINE
・関連コンテンツ