CSSの機能を使用してクロスオリジンのiframeから表示内容を読み取るサイドチャネル攻撃 11
ストーリー by headless
攻撃 部門より
攻撃 部門より
CSSの「mix-blend-mode」プロパティを使い、クロスオリジンのiframeに表示されている内容を読み取ることが可能なサイドチャネル攻撃について、発見者の一人が解説している(Evonideの記事、
Ars Technicaの記事、
SlashGearの記事)。
Webページがクロスオリジンのiframe内のDOM要素にアクセスすることはデフォルトで禁じられているが、iframeに別の要素をオーバーレイし、mix-blend-modeプロパティを使用すると色のブレンドが可能となる。「multiply」のように単純なブレンドモードでは処理時間に違いはみられないが、カラーチャネルを分離せずに処理する「saturation」のようなブレンドモードでは下のレイヤーの色によって処理時間が変動するのだという。
これを利用してピクセル単位でレンダリングを実行させ、処理時間を測定すれば、iframe上のターゲットピクセルの色を識別できる。PoCではFacebookのソーシャルプラグインを埋め込んだ攻撃用ページから、Facebookユーザーの名前やプロフィール写真を読み取っている。ただし、1回のレンダリングでは処理時間の違いを測定できないため、多数のsaturationレイヤーを重ねている。また、別のブレンドモードを指定したレイヤーをiframeとsaturationレイヤーの間に入れることで、特定のカラーチャネルを抽出するなどの処理を事前に行っている。
この脆弱性はGoogle ChromeとMozilla Firefoxで確認され、昨年12月リリースのChrome 63と今年5月リリースのFirefox 60でぞれぞれ修正されている。脆弱性は昨年3月に別の発見者がChromiumメーリングリストで報告していたが、Mozillaには手違いで11月まで報告されていなかったため、修正が遅れたとのこと。なお、Safariは発見時点で既に対策済みだったようで、Microsoft Edge/Internet Explorerではmix-blend-mode自体が実装されていない。
Webページがクロスオリジンのiframe内のDOM要素にアクセスすることはデフォルトで禁じられているが、iframeに別の要素をオーバーレイし、mix-blend-modeプロパティを使用すると色のブレンドが可能となる。「multiply」のように単純なブレンドモードでは処理時間に違いはみられないが、カラーチャネルを分離せずに処理する「saturation」のようなブレンドモードでは下のレイヤーの色によって処理時間が変動するのだという。
これを利用してピクセル単位でレンダリングを実行させ、処理時間を測定すれば、iframe上のターゲットピクセルの色を識別できる。PoCではFacebookのソーシャルプラグインを埋め込んだ攻撃用ページから、Facebookユーザーの名前やプロフィール写真を読み取っている。ただし、1回のレンダリングでは処理時間の違いを測定できないため、多数のsaturationレイヤーを重ねている。また、別のブレンドモードを指定したレイヤーをiframeとsaturationレイヤーの間に入れることで、特定のカラーチャネルを抽出するなどの処理を事前に行っている。
この脆弱性はGoogle ChromeとMozilla Firefoxで確認され、昨年12月リリースのChrome 63と今年5月リリースのFirefox 60でぞれぞれ修正されている。脆弱性は昨年3月に別の発見者がChromiumメーリングリストで報告していたが、Mozillaには手違いで11月まで報告されていなかったため、修正が遅れたとのこと。なお、Safariは発見時点で既に対策済みだったようで、Microsoft Edge/Internet Explorerではmix-blend-mode自体が実装されていない。