ブログ

Ruby On Rails Security Guideの訳 : 概要 + 1.Introduction

2009年05月22日 │ 木村

こんにちは。木村です。

今、Ruby on Rails Securityプロジェクト公式サイトに掲載されている、 Heiko Webers 氏が書かれた「Ruby on Rails Security Guide」の訳をしています。
ペースは遅くなるかもしれませんが、1セクションずつ掲載していく予定です。

ということで、今回は第1回。冒頭の概要と「1.Introduction」の訳です。
読みやすいように、原文の単語の意味と違う言葉に置きかえている場合もあります。是非、原文ページと併せて、ご覧下さい。気になる箇所や間違っている箇所があれば、どうかご指摘下さい。

Ruby On Rails セキュリティガイド
このマニュアルはWebアプリケーションでの共通のセキュリティ問題とRailsにおける回避方法を記述しています。もし、質問や提案があれば、私にメールして下さい。Heiko Webers, at 42 {_et_} rorsecurity.info
これを読み終えた後、以下のことに詳しくなっているはずです。

  • ハイライトされている全ての対応策
  • Railsのセッションの概念とセッションに保存すべきもの、セッションに対するよく知られた攻撃方法
  • サイトを訪れただけで、どのようなセキュリティ問題が起こりうるか(CSRFで)
  • ファイルを扱う場合や管理画面を使用している場合に気をつけなければならないこと
  • Rails特有のmass assignment(※1)問題
  • ユーザ管理方法:ログイン、ログアウトと全てのレイヤでの攻撃方法
  • よく知られたインジェクション攻撃方法

1.イントロダクション

WebアプリケーションフレームワークはWebアプリケーション開発者のために作られたものです。いくつかのフレームワークはWebアプリケーションを守る手助けもします。実際のところ、フレームワークによっては安全でないものがあります。フレームワークを正しく使えば、多くのフレームワークで安全なアプリケーションを構築することができるでしょう。Ruby on RailsはSQLインジェクション対策などの、賢いヘルパーメソッドを持っているため、まず問題ありません。私が検査した全てのRailsアプリケーションが、良いセキュリティレベルでした。

一般的にプラグ&プレイ(※2)セキュリティのようなものはありません。セキュリティはフレームワークの使用者や、開発手法に左右されます。そして、Webアプリケーションをとりまく全てのレイヤに依存します。: バックエンドの記憶装置、Webサーバー、Webアプリケーションそのもの(もしかしたら他のレイヤまたはアプリケーション)などです。

しかしながら、Gartner Groupは攻撃の75%がWebアプリケーションレイヤにあると予測しています。そして、”調査対象の300サイトの内、97%が攻撃に対して脆弱性がある”ことを発見しました。これは、Webアプリケーションが一般人でも簡単に理解して操作できるために、比較的攻撃しやすいからです。

Webアプリケーションに対する脅威には、ユーザアカウントハイジャック、アクセスコントロールのバイパス、重要なデータの読み出し・変更、不正なコンテンツの表示などが含まれます。すなわち、攻撃者がお金儲けや、会社の情報資源を変更することでブランドネームにダメージをもたらす目的で、トロイの木馬プログラムや未承諾メール送信プログラムのインストールができる恐れがあります。攻撃の防御、その影響の最小化、攻撃箇所の除去のためには、まず、正しい対策を見つけるために、攻撃方法を充分に理解しなければなりません。それが、このガイドが目的とすることです。

安全なWebアプリケーションを開発するためには、全てのレイヤを常に最新の状態にしたうえで、敵を知らなければなりません。最新の状態にしておくために、セキュリティメーリングリストに登録したり、セキュリティブログを読んだり、アップデートやセキュリティチェックを習慣にしてください。(Additional Resourcesの章を参照してください)私はそれを一つ一つ自分の手でやっています。なぜなら、それは難しい論理的なセキュリティ問題を見つける方法になるからです。

※1 model.update_attributes(params[:modelname])を使って属性に値をまとめて代入すること。
※2 つないだら (Plug)、ユーザが何か特別なことをしなくても実行 (Play) できるという意味。Windows95の頃にこの言葉が流行りました。