クロスサイトリクエストフォージェリ
2008年05月14日10:32
僕はあまりハッキングに興味が無い。 やればできるのはわかっているのでつまらないし、それよりも、既存のシステムの欠点をドラスティックに改善する新しいシステムの設計とその手法を研究するほうがずっと難しくてやりがいがあると感じるからだ。
でも、今日、ふと、疲れていて、なんとなく mixi に自動的に日記を追加する方法が無いかな... と思って漠然と調べていたら、面白い事に気が付いた。 mixi では、日記を不正に追加することがないように、post_key というランダムなトークンを発行して、これが一致しない場合は、不正アクセスとみなして、日記の作成を行わないようになっている。
このトークン、普通なら、毎回異なるトークンを発行するべきところなのだけど、その処理って結構システム負荷が高いのだ。で、どうしてるのかな... って見ていたら、どうも、ユーザーごとに一意な値を利用しているみたいだ。 これは、 ユーザーIDに一方向ハッシュをかけた値を使っているか、ユーザー登録時に一個だけ内緒のトークンを発行しているかのどちらかだ。
一方向ハッシュを使っているなら、プログラム的に推測する事ができる。 ...が、普通は推測されないようにソルトという特殊な値を組み込んだ上で使うはずで、ソルトを使われると検索する範囲が2の32乗倍とかそういう大きさで爆発的に大きくなってしまうので、これをブルートフォースアタックで破るのはちょっと面倒そうだ。 一方向ハッシュじゃないかもしれないし...。
いずれにせよ、post_key を 何かしらの方法で盗むことさえできれば、mixiで勝手に日記を作成するトラップを作るのは、そんなに難しくなさそうだ。 問題は post_key をどうやって入手するかだ。
◇
でも、実は、それが、わりと簡単にそれが出来てしまう。 それはクロスサイトリクエストフォージェリという方法を使うことだ。 これってどういうことだろうか。
だいたい、みんな、mixiを使う時は、ログインしっぱなしにしていると思う。 それをつかって、HTMLにこういう罠を仕掛ける事ができる。 すでにログインしてしまっているわけだから、あるHTMLを表示するときに、内部に見えない iframeを作成し、そこに見えないように mixi 日記作成画面をロードしてしまう、なんていうことができる。 すると、そこからpost_key とユーザーIDを盗むことができる。 更に、確認画面をロードして、確認用URLに転送すれば、さほど難しい技術を使わなくても、日記を作成する事ができる。
こうすることで、googleからエロ画像を検索 ... 思わずクリックしたら、いつのまにか mixiに オゲレツな日記がアップロードされている、 というような悪質なイタズラが出来てしまう。
つまりログインしっぱなしで、色々なサイトを見て回るのは、結構危険なのだ。
◇
mixi 日記ぐらいなら大した事ないかもしれないけど、amazon とか どういう対策をとっているんだろう。
P.S.1
高木浩光氏のページに物凄く上手な文章できちんと説明されているのを見つけた...。
ttp://takagi-hiromitsu.jp/diary/20050427.html
P.S.2
今日 facebookで 何か知っている人が、変なコメントをつけてきたのを見つけた。 女性からいきなり、penis enlargement guaranteed とか言われても、何のことかさっぱりわからなかった。 これも、今こうして改めて考えてみれば、クロスサイトリクエストフォージェリだったのかもしれない。
でも、今日、ふと、疲れていて、なんとなく mixi に自動的に日記を追加する方法が無いかな... と思って漠然と調べていたら、面白い事に気が付いた。 mixi では、日記を不正に追加することがないように、post_key というランダムなトークンを発行して、これが一致しない場合は、不正アクセスとみなして、日記の作成を行わないようになっている。
このトークン、普通なら、毎回異なるトークンを発行するべきところなのだけど、その処理って結構システム負荷が高いのだ。で、どうしてるのかな... って見ていたら、どうも、ユーザーごとに一意な値を利用しているみたいだ。 これは、 ユーザーIDに一方向ハッシュをかけた値を使っているか、ユーザー登録時に一個だけ内緒のトークンを発行しているかのどちらかだ。
一方向ハッシュを使っているなら、プログラム的に推測する事ができる。 ...が、普通は推測されないようにソルトという特殊な値を組み込んだ上で使うはずで、ソルトを使われると検索する範囲が2の32乗倍とかそういう大きさで爆発的に大きくなってしまうので、これをブルートフォースアタックで破るのはちょっと面倒そうだ。 一方向ハッシュじゃないかもしれないし...。
いずれにせよ、post_key を 何かしらの方法で盗むことさえできれば、mixiで勝手に日記を作成するトラップを作るのは、そんなに難しくなさそうだ。 問題は post_key をどうやって入手するかだ。
◇
でも、実は、それが、わりと簡単にそれが出来てしまう。 それはクロスサイトリクエストフォージェリという方法を使うことだ。 これってどういうことだろうか。
だいたい、みんな、mixiを使う時は、ログインしっぱなしにしていると思う。 それをつかって、HTMLにこういう罠を仕掛ける事ができる。 すでにログインしてしまっているわけだから、あるHTMLを表示するときに、内部に見えない iframeを作成し、そこに見えないように mixi 日記作成画面をロードしてしまう、なんていうことができる。 すると、そこからpost_key とユーザーIDを盗むことができる。 更に、確認画面をロードして、確認用URLに転送すれば、さほど難しい技術を使わなくても、日記を作成する事ができる。
こうすることで、googleからエロ画像を検索 ... 思わずクリックしたら、いつのまにか mixiに オゲレツな日記がアップロードされている、 というような悪質なイタズラが出来てしまう。
つまりログインしっぱなしで、色々なサイトを見て回るのは、結構危険なのだ。
◇
mixi 日記ぐらいなら大した事ないかもしれないけど、amazon とか どういう対策をとっているんだろう。
P.S.1
高木浩光氏のページに物凄く上手な文章できちんと説明されているのを見つけた...。
ttp://takagi-hiromitsu.jp/diary/20050427.html
P.S.2
今日 facebookで 何か知っている人が、変なコメントをつけてきたのを見つけた。 女性からいきなり、penis enlargement guaranteed とか言われても、何のことかさっぱりわからなかった。 これも、今こうして改めて考えてみれば、クロスサイトリクエストフォージェリだったのかもしれない。
コメント一覧
ジャコビ 2008年05月14日 11:23
という事は、ミクシィでも何でも、毎回ログインして、終わったらログオフした方が良いんですか?