BLOGTIMES
2012/08/05

location.href の扱いに注意

  javascript  cve 
このエントリーをはてなブックマークに追加

JavaScript で location.href を使っていると XSS が発生する場合があるらしいのでメモ。
原理を理解するまで少し時間がかかりましたが、やっと分かりました。Safari のバグというよりは webkit のバグですかね。

Masato Kinugawa Security Blog: location.hrefの盲点

@の前の「%2F」が「/」にデコードされて表示されています。そうです、なんと、Safariのlocation.hrefは、ホストの前の@の前の文字列をパーセントデコードして返すのです。(@がついたURLはあまり目にしませんが、@の前には認証情報を記述することができます。)
これはつまり、location.hrefが自分と同じドメインのURLを返すことを前提に書いているコードは全て、正しく動かない恐れがあるということです。最悪の場合、XSSが起こります。

影響を受けるブラウザについては下記にまとめがありますが、Safari Mobile/Android 4.1 未満では修正されていないようなので注意が必要です。自分が使っている環境が具体的に影響を受けるかについても下記のページで確認が可能ですので、気になる場合はチェックしてみると良いと思います。

@‎XSS (一部のブラウザのlocation.hrefがXSSを引き起こしやすいことに関する注意喚起)

影響を受けるブラウザ
  * Safari 5.1.7以前(5.1.7を含みます。MacのSafari 6では修正されていますがWindowsは修正版がリリースされていません)
  * Safari Mobile(最新のiOS 5.1.1でもこの挙動をします)
  * Android標準ブラウザ4.1未満?(Android 2.3.6でテストしました。@bulkneetsさんによると4.1は修正済み、4.0.3は影響を受けるとのことです。@cubedlさんによると4.0.4は影響を受けるとのことです。)

参考

 ・CVE-2012-3695


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/5139
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン