記事本文
はてなブックマークの CSRF 脆弱性 ( 対策済 )
はてなブックマーク日記 - お気に入りに追加ボタンのCSRF脆弱性修正についてという記事を見かけていたんですが、どういった脆弱性が存在していたのかなーと思っていたら、先ほど追記したはてなのプロフィール画像によって表示は遅くなるのかという検証と、プロフィール画像を非表示にするいくつかの方法で触れた plotless: はてブのユーザアイコンでSafariが激重に!? 繋がりで [はてな] 削除されたプロフ画像 :: ぼくはまちちゃん!、そして被お気に入り数を増やす / はてなの誰が見にきたかを知る :: ぼくはまちちゃん!に辿り着きました。
これは CSRF 脆弱性を突いて、本人が意識することなくはてなブックマークのお気に入りに登録させるものでしたが、逆に Retasuの日記 - お気に入り戦争のように、そのお気に入り登録を解除する CSRF 攻撃も出現していました。 そういった流れを受けて、はてなブックマーク日記 - お気に入りに追加ボタンのCSRF脆弱性修正についてという対策に至ったようです。
CSRF って何っていう方は、 Movable Type における CSRF の可能性と各種対処法や、その他キーワード "CSRF" が設定された記事をご覧ください。 それぞれの記事の中に、外部の参考リソースへのリンクも書いてあります。 最近では、まこと先輩と星野君とCSRFの微妙な関係 - @IT という記事もあります。 関係ないけど、その記事の前回分である Webアプリ、入力チェックで万事OK? - @IT のトナカイ星野君が可愛いです。 ちなみにイラストを担当したのは交差点の真中での harupu さん。 ~JavaScriptでXMLHttpRequest~という Ajax の解説ページがためになります。
ある程度自衛できる場合と自衛できない場合
CSRF 攻撃というのは、仮に web システム側に脆弱性があっても、ユーザ側で防御策を取ることで防ぐことができる場合もあります。 例えば、 Movable Type ( 記事を投稿する時など以外はログアウトする、記事を投稿するブラウザと通常の web ブラウジング用のブラウザを使い分けるなど ) やはてなダイアリー ( 日記を書く時や他人のダイアリーにコメントを書く時以外はログアウトする、日記を書いたりコメントを書いたりするブラウザと通常の web ブラウジング用のブラウザを使い分けるなど ) がそれにあたります。
しかし、はてなブックマークのように、ログインしている状態で web ブラウジングすることを前提として作られているシステムは、こうした自衛策は使い辛いものです。 ( ブックマークレットを用いて手軽にブックマークを追加できるというのが売りのため、こまめにログアウトしたり、ブラウザを使い分けるというのは不便でなりません。 ) Bloglines や FEEDBRINGER などもログインして web ブラウジングする前提になっていますので、はてなブックマークだけの話ではありませんが。
となるとシステム提供側による確実かつ素早い対応が求められるわけですが、ユーザ側も「常にログイン状態で web を歩いている」ということを気にかけておくようにしてください。 自衛し辛いと言っておいて何ですが。

