Rails2.1系のwebサービスを公開している方は注意。
Riding Rails: Potential Circumvention of CSRF Protection in Rails 2.1
どういう事かというと、
- 通常、RailsはCSRFを防ぐために、フォームにtokenを自動で埋め込みリクエスト受付時に認証を行っています。
- ブラウザで普通生成できない、信頼されているcontent-typeのリクエストはそのtokenの認証を行わずスルーしているようです。
- その信頼されているcontent-typeリストの中に、ブラウザで生成できる'text/plain'が入ってしまっているようです。
つまり、Rails2.1系で作られたwebサイトに対しては、content-typeをtext/plainにしておけばCSRFし放題ってこと・・・なはず。
対策
次回のアップデートバージョンである2.1.3及び2.2.2ではこの脆弱製は解消されているようです。
それらがリリースするまでの暫定処置としてはconfig/initializers配下にhoge.rbのようなファイルを作り、下記のように書けばOKなようです。
Mime::Type.unverifiable_types.delete(:text)