Skip to content

Instantly share code, notes, and snippets.

@mala
Last active July 8, 2019 02:53
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mala/5096954 to your computer and use it in GitHub Desktop.
Save mala/5096954 to your computer and use it in GitHub Desktop.
Google Safe Browsing と埋め込みリソースの関係

検証環境 Firefox19.0 / Chrome 27.0.1425.0 / Safari 6.0.2

攻撃サイトとして報告されているURLを(hosts書き換えて) 読み込むとどう反応するか。それぞれアドレスバーに直接入力だとブロック。

Chromeの場合

  • 画像: リクエスト自体行わない、派手な警告を出す
  • script: リクエスト自体行わない、派手な警告を出す
  • iframe: リクエスト自体行わない、派手な警告を出す

Firefoxの場合

  • 画像: ブロックされない
  • script: リクエストは行うが、実行されない、警告は出ない
  • iframe: リクエストは行い、iframe内に警告表示

Safariの場合

  • 画像: ブロックされない
  • script: ブロックされない
  • iframe: リクエスト自体行わない、派手な警告を出す

まとめと考察

chromeはとにかくリクエストを飛ばす前にチェックしている、firefoxはリクエスト自体はブロックせずにどういう文脈で読み込むのかを考慮している、safariはアドレスバーやフレームしか見ない(Flash、Java未検証)。

画像のデコード処理自体にクリティカルなバグがあれば(めったにない)、画像を読み込んだだけで危険な可能性はあるし、攻撃サイトにIPアドレスを知られる時点でマズイという可能性もあるだろう。

  • chromeのポリシーは安全よりだが過敏で、副作用が大きい。例えば外部サイトの画像を埋め込む機能を持っているサービスに対する嫌がらせができる。
  • firefoxのポリシーは妥当だと思うがリクエスト自体は飛ばしてしまう。scriptのブロックに警告が出ないのはそれはそれで影響がありそう。
  • 「広告が表示されないことに気付かないまま数日間ブロックされたままだった」とかね。chromeが派手な警告出すので気付けるけど。
  • safariのポリシーは、scriptをブロックしないので安全ではないだろう。(動的に生成したscriptで、まだ危険判定されてないURLへのリダイレクトができる)

Chromeは「フィッシングや不正なソフトウェアからの保護を有効にする」Firefoxは「攻撃サイト」のブロックと「詐欺サイト」のブロックでそれぞれチェックボックスがある。Safariは「詐欺Webサイトを訪問したときに警告」なので「悪質なscriptの混入」は保護の対象外なのかもしれない。

FirefoxでJavaScriptとCSSの読み込みがブロックされるのは明確に仕様であるようだ。

「Chromeだけ反応する」という場合は、アウト判定されているドメインが「画像やscript」として読み込まれている場合だ。事例としてはこれ

FirefoxやSafariでも反応するということは「そのサイト自身」のGoogle Safe Browsingの結果がアウト判定されているということ。

推測するに、Google Safe Browsingのブラックリストは、攻撃サイトと判定されているサイトへの「リンクを生成するjavascript」や「リダイレクトしうるjavascript」が含まれている場合には、スコアが伝搬するようにしているのではないだろうか。

というわけでこういう結論に至った https://twitter.com/bulkneets/status/308881527599677440

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment