Langley のサイバーノーガード日記 やっぱりブログっていろいろ怖い 大手ブログサイトでXSS脆弱性
ご存知の方もいらっしゃると思うが、筆者はブログを書いている。といっても、月に1度も更新していないので書いているなどとは言えない状態ではある。
特集
特集
しかしこのブログがあるおかげで、たまにタレコミを頂く。今回は、ブログサービスの脆弱性についてのご連絡を頂いた。サービス元には連絡済みであるが、まだ脆弱性が残っているので、どこかは言わないでおこう。とりあえず大手です。
●ブログの脆弱性のコードとは
具体的なコードは下記になる。
特定のブログのURL?ul="><script>任意のスクリプト</script>
例えば、こんな感じになる(サンプルなんでURLは架空のものです)。
http://blogyabaiyo.com/?ul="><script>alert(1)</script>
IEで閲覧するとちゃんと「1」が表示されるのを確認できます。
ついでにクッキーを読み取れるかもやってみた。
http://blogyabaiyo.com/?ul="><script>alert(document.cookie)</script>
見事に、当該サイトからのクッキー情報が表示された。これをこのままメールでどっかに送ればクッキー情報を簡単に盗める。
●5つの問題点
いろいろ確認してみたところ、下記のような状況だった。
1.このブログサービスでは、ブログパーツとして検索とか、メールフォームとか、いろいろなパーツを提供している
2.どうやらブログを特定するために、ulパラメータを利用しているらしい
ブログ内検索やメールフォームなどでは、処理を行う際にどのブログからのリクエストであるかを判別する必要がある。普通に考えると、ブログのURLを渡せばいいじゃん、と思う。実際、他の大手ブログサービスでは、リクエスト元のブログのURLを検索やメールフォームのリクエストを出す際に、渡しているところもあった。具体的には、こんな感じである。
ブログ内検索の例
<form action="ブログ内検索のプログラム" method="GET">
<input type="HIDDEN" name="q" value="当該ブログのURL">
脆弱性のあった大手ブログサービスでは、セッションIDらしきものをリクエストの際に渡しているようである。
3.ulパラメータは本来は、利用者が使うようなものではないらしい
セッションIDだとすれば、利用者に勝手に指定されては困るであろう。アドレスバーやブログ画面に表示されるようにはなっていなかった。
4.ulパラメータを利用者が指定すると、そのままブログパーツの中にも反映されてしまう
例えば、検索フォームでは通常、下記のようにulパラメータが埋め込まれる。
<form action="http://blogyabaiyo.com/?ul=99d55f22acb51bf4" method="get">
99d55f22acb51bf4がセッションIDっぽいものである(ちなみに、これは筆者が適当に作ったフェイク)。
ところが、アドレスバーに、http://blogyabaiyo.com/?ul=11111 と指定すると、検索フォームは下記のようになる。
<form action="http://blogyabaiyo.com/?ul=11111" method="get">
なので、「11111」の箇所に任意のHTMLコードやスクリプトを埋め込むと動いてしまうわけである。普通は、パラメータのチェックを行うものであるが、チェックルーチンがないようである。
5.全てのブログパーツに埋め込まれているわけではない
試しにこのセッションIDらしきものを利用していそうなブログパーツをはずしてみたら、スクリプトは動かなくなった。
余談であるが、筆者の推測であるが、この大手ブログサービスでは有料サービスやアフィリエイトサービスなどを多く行っている。つまり、利用者を特定する必要のあるサービスが多いのであろう。そのために、セッションIDを多用しているのではなかろうか?
●ブログパーツはノーチェック?
状況を考えると、ありがちな脆弱性だと思うのであるが、率直に言ってここは大手である。それでも、まだこんな脆弱性が残っているのである。
しかも、実は通報してから約2週間経つが未だに脆弱性への対処は完了していない。
この件で感じたのは…
【執筆:Prisoner Langley】
【関連リンク】
セキュリティコラムばかり書いているLANGLEYのブログ
http://netsecurity.blog77.fc2.com/
──
※ この記事は Scan購読会員向け記事をダイジェスト掲載しました
購読会員登録案内 http://www.ns-research.jp/cgi-bin/ct/p.cgi?w02_ssw
《ScanNetSecurity》