2014年3月11日火曜日

cheeers! のオープンリダイレクタ脆弱性が修正された

クラウドファンディングサイトcheeers!にはオープンリダイレクタ脆弱性がありましたが、サイト運営者に連絡したところ修正されましたので報告します。

cheeers! のログイン画面は下記の通りですが、アドレスバーに注目ください。from=というクエリ文字列にURLをパーセントエンコードしたものがついています。


正しいIDとパスワードを入力してログインすると、このfromで指定されたURLに遷移ます。下記は遷移後の画面例です。


以上は正常系の流れですが、それではfrom=に、cheeers! とは無関係のURLを指定したらどうなるでしょうか。たとえば、from=https://twitter.com/HiromitsuTakagi/status/350971098248118272 と指定しておくと、ログイン成功後に下記の画面が表示されていました(現在は表示されません)。
— Hiromitsu Takagi (@HiromitsuTakagi) 2013, 6月 29

これはかなりドキッとしそうです。ひょっとすると、口に含んでいたコーヒーを手許のMacBook Airにぶちまけてしまうという「被害」も想定されますが、被害はこれにとどまりません。以下は、cheeers!のログイン失敗画面ですが、これとそっくりの「偽画面」を用意して、そこに遷移させるという攻撃が考えられます。


すると、大半の利用者はパスワードを間違えたと勘違いして、もう一度正しいID(メールアドレス)とパスワードを入力するでしょう。しかし、これは偽画面なので、IDとパスワードを盗まれてしまいます。その後正規の画面に遷移するので、パスワードを盗まれたことすら気づかないで、利用者は閲覧を続けるでしょう。フィッシングの一種ではありますが、起点となる画面が正規のものなので、注意深い人でもだまされやすいというところが問題です。

私はこの問題に3月7日(金)夜に気づきましたのでメールにて運営に報告したところ、3月10日(月)には状況が変化していました。具体的には、https://twitter.com/.... などのサイトには遷移しないようにチェックが入ったようですが、このチェックは不完全でした。具体的には、以下のようなURLはチェックを通ってしまう状況でした。
  • http://takeo.cheeers.jp.example.jp/
つまり、前方一致検査で、http://takeo.cheeers.jp までを確認していたようですが、正しくは、http://takeo.cheeers.jp/ まで(スラッシュまで)確認しなければ、上記のようなサブドメインを使った攻撃を許してしまうのでした。
この問題に昨夜気づきましたので、再度運営に連絡したところ、今日の午前中には修正されていました。

オープンリダイレクタは比較的よく見かける脆弱性ですので、読者の皆様もご注意ください。

なお、拙著体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践には、4.7.1 オープンリダイレクタ(P184)として、脆弱性が混入する原因や対策方法について詳しく説明しています(宣伝)。

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ