mixiのセッションハイジャック脆弱性について
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