BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Ruby on Railsのセキュリティの脆弱性

Ruby on Railsのセキュリティの脆弱性

原文(投稿日:2009/09/08)へのリンク

昨今、Ruby on Railsのコミュニティを賑わしたのは、すべてのRails開発者が知らされるべきである、セキュリティの脆弱性がいくつも見つかり、続けざまに修正版が出たことである。

クロスサイトスクリプティングの脆弱性

最初にそしておそらく最も重大なのは、クロスサイトスクリプティング (XSS) の脆弱性でBrian Mastenbrook氏より発見され、氏のブログで報告されている。 氏は、Ruby on Rails のアプリケーションであるTwitterと37signalsの製品であるBasecampをいかにクロスサイトスクリプティングしたかを記述している。

私はすぐに Twitterに注目した、その時オープンしているwebアプリケーションはこれのみだった。2,3分後には、URLのクエリパラメータからエスケープ処理をすり抜けてtwitter.comの本体で走るJavaScriptコードを作った。当たり!Twitterワームとなるクロスサイトスクリプティングの素材ができた。しかしこれは、Twitter特有の問題なのか、あるいは他のサイトにも影響するのものなのか?

私は、だいぶ前に作った Basecamp のアカウント用テストコードをすぐに取り出した。Twitterと同じく、Basecampもwebのフロントエンドに Ruby on Rails を使っているので、問題がRailsにあるのかTwitter特有なのかを判断するのに適切なテストである。案の定、Twitterの攻撃と同じ異常なUTF-8コードでBasecampも攻撃できた。

このような攻撃の確率は、大変高くはないが、Ruby on Railsのチームは素早く反応し、問題を確認して、Railsのバージョン2.0~2.3用のパッチを出した。

パッチは、git-am用のフォーマットで、2つのChangesetからなる。マルチバイトの文字列を浄化するコードとそのコードを関連するヘルパに渡すものである。

Railsの開発チームは、非サポートバージョンのRailsを最近のバージョンにアップグレードするように言っている、将来の問題に対しては今回のようなバックポートをしない可能性があるからである。バージョン2.2系と2.3系のRailsだけが今後もサポートされるバージョンと考えられていることを憶えておくべきである。

タイミングの弱点

2つ目の問題は、タイミング攻撃に関連したものである。このような攻撃は、Railsがクッキーストア中のメッセージダイジェストを検証する方法に関連していて、ねつ造された証明書が部分的に正しい時に攻撃者にダイジェストを突き止めることを許してしまうかもしれない。このことが、このプロセスよる、更なる攻撃へと導き、おそらくダイジェストをねつ造できてしまう。

Railsチームは、この種の攻撃はほとんど発生しないと言っているが、パッチを当てることをやんわりと推奨している。パッチは、バージョン2.2系と2.3系の今後サポートするRails用にのみリリースされた。:

パッチは、git-am用のフォーマットで、1つのChangesetからなり以下のパッチが盛り込まれている

Coda Hale氏は、Railsのタイミングの弱点を発見したと認められている。氏のサイトには、タイミングの弱点とは何か、 そしてどう悪用されるかについて説明している非常にすばらしい記事が載っている。

Ruby on Rails 2.3.4

自分のRailsアプリケーションにパッチを当てたくない、と思っている開発者は、最近のすべてのパッチを含んだ新しいバージョンのRuby on Rails, 2.3.4 を入手できる。これは、バグ修正と上述の2つのセキュリティの脆弱性に対する修正が含まれている。

セキュリティの修正

2.3.4は、我々に報告された2つのセキュリティ問題に対する修正が含まれています。更に詳しくは、セキュリティ告知を見るように:

バグ修正

BugMash の成功のおかげで、このリリースには約100ヶのバグ修正が含まれている。開発モードで動作している時に、RackミドルウェアとRails Metalに関連する再ロードの問題を修正したが、これは格別なものではない。 このリリースには、新しい機能も入っていて、単にrake db:seedコマンドでプロジェクトのデータベースにseed(シード)データを加えることができる。

この記事に星をつける

おすすめ度
スタイル

BT