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

 | 

2011-04-28

WebサイトにXSS脆弱性があった場合にブラウザのパスワード保存機能で保存したパスワードを読み取り可能かどうか

18:28 | WebサイトにXSS脆弱性があった場合にブラウザのパスワード保存機能で保存したパスワードを読み取り可能かどうか - 金利0無利息キャッシング – キャッシングできます を含むブックマーク はてなブックマーク - WebサイトにXSS脆弱性があった場合にブラウザのパスワード保存機能で保存したパスワードを読み取り可能かどうか - 金利0無利息キャッシング – キャッシングできます

XSS脆弱性があった場合にそのサービスで使っているパスワードを盗むことが可能かどうかについて書く。

XSSを通してパスワードを盗むことができるのか?

Webアプリ開発者側で出来る対策

パスワードマネージャの実装

  • 1. ユーザーが何か操作をするまでパスワードを自動入力しないもの
  • 2. 表示した段階でユーザー名やパスワードを自動入力するもの

があります。前者はIE, Operaで、後者はFirefox, Safari, Google Chromeです。

XSSがあった場合の通常のリスクは「そのドメイン上で任意のJavaScriptが実行可能」で、本人確認のためのパスワード入力を求められたりしたら、攻撃者が知りえない情報をJavaScriptで自動入力することは出来ないので、それ以上のことが出来ない。ただし、出来の悪いパスワードマネージャを使っている+XSSがあるドメイン上でパスワードを入力させている+ユーザーがそのドメイン上でパスワードを保存している、という場合、攻撃者がパスワードを取得して外部に送ったり、パスワードの入力が必要な操作を突破できる可能性がある。不安を煽るのが目的ではないけれど、そういったリスクがあることは、予め知っておいたほうが良いだろう。

IEOperaパスワードマネージャの実装のほうが優れているかというと、まあ確かに自動入力しないことによって、XSSや悪意のあるuserscriptやページの内容まるごと送るようなブックマークレットなどに対してパスワードが渡される可能性が減るだろう。ただし、パスワードが自動入力されてからフォームが送信して画面遷移するまでのタイミングで、フォームの内容を読み取ることはできる。

FirefoxのSecure loginというaddonが「XSSパスワードが盗まれる」という問題について考え、対策を実装している。

  • JavaScriptプロテクションという機能を有効にすると、パスワードをフォームに入力せずにログイン用のURLに直接リクエストを送るようになっている
  • 入力から画面遷移までのタイミングで悪意のあるscriptからフォームの内容を読み取られるのを防ぐ
  • フォームをJavaScriptで加工してリクエストを生成するようなケースで、うまく動かなくなるだろう
    • 典型的にはクライアントサイドでパスワードハッシュ化した上で送るとか、onsubmitのタイミングでtoken付加するとか、そういう事をやってる場合
    • そういうケースのためにJavaScriptプロテクション機能を除外するURLを指定できる

参考文献

トラックバック - http://subtech.g.hatena.ne.jp/mala/20110428
 |