InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

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

作者 Robert Bazinet , 翻訳者 編集部N 投稿日 2009年9月13日

セクション
デベロップメント,
設計/アーキテクチャ
トピック
Ruby on Rails ,
セキュリティ ,
Ruby
タグ
Vulnerabilities ,
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(シード)データを加えることができる。

特集コンテンツ一覧

GAE開発の落とし穴

Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します

イベントレポート:「Coqチュートリアル#1」

去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。

Javaの未来についてのNeal Gafter氏とのディスカッション

Choosing Options

Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。

Google Dartのエッセンス:アプリケーションの構築、スナップショット、Isolate

GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式

CSPベースのモデル検査ツール「Process Analysis Toolkit」

本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。

Jenkinsによる継続的インテグレーションのススメ(4) ~CloudBeesでJenkinsをサービスとして使う~

前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。

書籍『抽象によるソフトウェア設計-Alloyではじめる形式手法-』の紹介

Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。

Windows デバイスで開発するタッチユーザーインターフェイス

スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。