金利0無利息キャッシング – キャッシングできます

 | 

2012-10-23

Safariのfile://におけるSame origin policyについてのアップデート

00:02 | Safariのfile://におけるSame origin policyについてのアップデート - 金利0無利息キャッシング – キャッシングできます を含むブックマーク はてなブックマーク - Safariのfile://におけるSame origin policyについてのアップデート - 金利0無利息キャッシング – キャッシングできます

http://subtech.g.hatena.ne.jp/mala/20110425/1303730089 を書いた時から、少し変化があったので書いておきます。

SafariにおいてローカルHTMLファイルかローカルファイルを読み取ることが出来るというのは広く知られている問題で、脆弱性として報告されるからには何かしら「攻撃を容易にする方法があった」のだと理解していました。で、表現の問題だと思うのですが、タイトルが"リモートからローカルファイルを読み取り可能な脆弱性"となってて、これだと脅威の度合いを勘違いする人が多いのではという気がします。自分の知る限り、あくまでfile://を何らかの方法でユーザーに手動で開かせる必要があります。

報告者のmasa141421356さんの話を聞いたところダウンロードしたファイルを強制的に開かせる、というものではありませんでしたが、それなりに脅威の度合いが高いなと納得できるものでした。Aaron Sigelという人も報告していて、もっと凶悪な方法があるのかも知れません。が、自分は把握してません。

10/24追記: やっぱWebから直接ではなくて何らかの方法で悪意のあるファイル開かせる必要があるということだと思います

httpから、file:// のURLに遷移したり、iframeで読み込んだりwindow.openで開いたりするのは以前から制限されていて自分の知る限り方法はありません。ただ、いろんな方法で騙して悪意のあるローカルHTMLファイルを手動で開かせようとすることは出来るでしょう。

Safari 6.0.1の場合

https://gist.github.com/3937884

説明するのが既に大分面倒なのですが、簡単に言うと、OSXでは対応しているアプリ経由でインターネットからダウンロードしたファイル全般に com.apple.quarantine という拡張属性が付きます。このフラグがついている場合には、インターネットからダウンロードしたファイルですが開いてよろしいですか、と警告を出したりします。

で、それが

  • LionのSafari6.0.1 → 警告あるけど開いたら何でもオッケー
  • Mountain LionのSafari6.0.1 → フラグ維持したまま安全なモードで開く

という変更がなされました。Mountain LionのSafari6.0.1の隔離モードでHTMLファイルを開いた場合、Same originが自分自身のHTMLファイルに制限されます。これはGoogle ChromeのローカルファイルにおけるSame origin policyと同じです。

Windows版の修正が出るかというと、そもそも開発継続するのかどうかわからないですし、LionとMountain Lionで既に挙動が違っていることから分かるように、対応するとしても結構面倒くさいのではないかと思います。「Lionではファイルを開く際に警告してロック解除」「Mountain Lionではフラグを維持したまま安全なモードでHTMLファイルを開く」と対応が違います。これは、OSダウンロードしたファイルに対して「一律で警告を出す」のか、それとも「アプリケーション側が面倒を見る」のかという問題です。

信頼出来ない危険なファイル、あるいは、危険なプロトコルに対してOSが一律で警告を出して、アプリ側では配慮しないというポリシーもありでしょうし、Mountain LionSafariのようにフラグを見て、Same origin policyを切り替えるというのもありでしょう。見た目には全然わからないのでややこしいわけですが。Windowsで、これをやろうとするとZoneIdというのがあります。IEと同じことをやらないとダメってことですね。

まとめ

  • Safari 6.0.1にアップデートした場合でも、file://のURLを開く際には一定のリスクがあります。
  • SafariでローカルHTMLファイルを開くのは、条件次第で、依然として危険な状態のママです
  • webarchive形式で保存したWebページは権限が制限されます(安全です)
  • 制限されていない場合、XMLHttpRequesthttp/httpsのページを取得することができます。
  • 制限されていない場合、XMLHttpRequestCookieを送ります。ログイン済みページスクレイピングしたい場合には便利ですし、悪意のあるHTMLファイルを開いた場合には危険です。
  • ダウンロードしたHTMLファイル(com.apple.quarantine付与)は
    • Lionの場合警告が表示されます、警告を無視して開いた場合には無制限です
    • Mountain Lionの場合、Same originが制限された状態で開かれます
  • HTMLダウンロードしたり生成したりする性質のあるソフトウェア全てが com.apple.quarantine フラグを付けてくれるとは限りません。
  • 例えば wgetコマンドで保存したHTMLファイルにはついてません(まあ当たり前だけど)

Safariでfile://を開くのは、依然としてリスクがある状態であるので、単に「脆弱性が修正された」「Safari6.0.1以降にアップデートを」とアナウンスされてしまうと、かえって危険な状態なのではないかと思います。最新版にアップデートしておけば安心といったものではないですし、ここらへんのポリシーがブラウザ毎にバラバラなのは今に始まったことではないのですし、すぐに解決するような問題ではないです。

以上です。

 |