Google Chrome のアドレスバーに出てくる警告表示のレベルの違いを調べてみた

Google Chrome 12.0.742.100 現在での話。
Google Chrome 12.0.742.100 では、https 及び http の混在したページを開くと、Omnibar(アドレスバー)部分のプロコトル表示の個所が注意または警告を示すようになっている。(下図)

どちらも基本的には「ページ自体はhttpsで接続されている」かつ「httpで接続されたリソースが紛れ込んでいる」場合に、そういう混合状態であることを警告しているのだけど、上図のように警告に2段階のレベルが存在する。
Googleからも公式にアナウンスが出ていたりもする*1のだけれども、具体的にどういう状況で警告レベルが変わるのかを挙動を元に*2調べてみた。

警告が表示される前提

この警告が表示される場合は、以下の2つを満たしている場合。

  1. Webページにはhttpsで取得されている
  2. そうして読み込まれたページ内にhttpで取得されるリソースが紛れ込んでいる

警告表示の種類を変える要因

そんなわけで、警告表示の種類を変える要因について、Chrome Developer Toolのコンソールからチマチマと要素を追加して、調べてみた。

黄色の警告表示(注意レベル)

  • iframe要素でhttpのページを読み込む
    • 同一ドメインでもダメです
  • 画像(img要素)など、ブラウザがネイティブで再生できるマルチメディアコンテンツ
    • object要素、embed要素でも、pngやjpegを読み込んだ程度では黄色の警告レベルだったり
    • video要素でmpgを読み込んでも警告表示は無いが、img要素だと黄色、embed要素だと赤色になったりする
  • linkによる外部スタイルシートの挿入

赤い警告表示(マジで警告してる)

  • SWFファイルなど、プラグインを起動するようなコンテンツ
    • object要素、embed要素は当然アウト
    • ちなみにimg要素のsrcにSWFファイルを指定して読み込むと黄色の警告表示で済むんだなコレが
  • script要素(httpで読み込む)

例外(警告が表示されない)

  • iframe要素でhttpsのページを読み込む(外部ドメイン可
  • script要素(httpsで読み込めば外部ドメイン可

警告レベルを分けている理由

これについては複数考えられるけれども、第一には、Gumblar初期において、改ざんしたページで外部の攻撃用ファイルを読み込ませるという手法*3が取られたことに対する対策なんでしょうね。

*1:[http://googleonlinesecurity.blogspot.com/2011/06/trying-to-end-mixed-scripting.htm:title=Google Online Security Blog: Trying to end mixed scripting vulnerabilitiesl]

*2:Chromiumソースコードを読む気力は無かった!

*3:[http://www.mcafee.com/japan/security/gumblar.asp:title=新ウイルスGumblar(ガンブラー)対策について | マカフィー]