悪あがきプログラマー

悪あがきを続けていきたい技術と書評なブログです。トレタでiOSエンジニアやってます。

mixiのセッションハイジャック脆弱性について

f:id:y_koh:20130407105523j:plain

cookieについて色々調べていて、大手サイトではどうやってるんだろう?とお手本にしようと思ったら脆弱性だった件。

cookieに保存されているセッションキーにhttponly属性が付いてなかった。
これは何が問題か?

mixiにログインした状態で下記JavaScriptをURL欄にコピペして試してみてほしい。

javascript:alert(document.cookie)

モダンなブラウザは頭の"javascript:"がコピペ出来ないようになっているので手打ちしてください。ちなみにこのJavaScriptはブラウザで開いているサイトのcookieをアラートで表示するだけなので特に問題ありません。

"session"というキーののcookieが抜けたはず。はい、セッションキーが抜けてしまいました。セッションキーが抜けるともちろんアカウント乗っ取りが可能。試しに別ブラウザを立ち上げて上記で抜いたsessionを突っ込んでログイン後のページにアクセスすると、ログイン済ページにアクセスできました。

このセッションキーをJavaScriptで抜けないようにするにはcookieにHttpOnly属性をつければ良いです。そうすると名前の通りHttp(or Https)でしか利用できなくなります。
HTTP cookie - Wikipedia, the free encyclopedia

JavaScriptでセッションキーを抜くにはリンクを仕込んで踏ませるなど、もう一つ何かをかまさなければいけないと思うけれど、これを放置しておく理由はないと思う。実はこういう理由で外してるんだよーきっと、というのがあったら教えて欲しいです。

ところでここまで書いてきたけれど、こういうのってブログに書くのはまずかったかなぁ?まずかったら消しますのでご連絡くださいm(__)m