CSRF脆弱性と0.9.6.2のHTTPリファラチェック機能

2008年9月18日 09時00分 shortlink:http://modx.jp/?id=15

MODx 0.9.6.1p2とそれ以前のバージョンにおいて、CSRF脆弱性が発見されています。該当するバージョンを使用しているユーザは適切な対策を行うことが望まれます。

CSRF脆弱性はCSRF攻撃の対象となる脆弱性で、CSRF攻撃とは、正規のユーザに不正な操作を強いる攻撃です。

MODxにおいては、ユーザが正規のセッションにある場合(ログインしたままの状態)に、悪意ある者がユーザを特定のURIにアクセスさせることによって、ユーザが意図しない操作を強いられることになります。対象としては、ドキュメントの削除、リソースの削除、ユーザの削除など広範囲に渡ります。これは、正規の権限を持つユーザが、意図しない内に悪意のあるURIにアクセスさせられ、自らの行動によって問題の操作が引き起こされるためです。

MODx 0.9.6.2においては、HTTPリファラによるチェック機能が搭載されており、この機能を有効にすることで、正規のドメインを経由しない操作が遮断されることになり、CSRF攻撃の可能性を軽減させることができます。具体的には、「ツール」→「MODX 設定」→「サイト」→「HTTP_REFERER チェック」を「はい」にすることで有効になります。

ただし、この機能は環境によっては正しく動作しないことがあります(特に、リファラの送信を遮断するセキュリティソフトウェアを使用している環境など)。その場合には、HTTPリファラチェック機能を無効にする必要があるが、この機能を有効にした後ではマネージャにアクセスできなくなる可能性があります。そういった場合、データベースと/assets/cache/siteCashe.idx.phpを修正して、HTTPリファラチェック機能を手動で無効にする必要があります。

HTTPリファラチェック機能を手動で無効にするには、データベースのsystem_settingsテーブルの「setting_name」フィールドが「validate_referer」となっているレコードの「setting_value」フィールドを「0」に修正します。その後、/assets/cache/siteCache.idx.phpの以下の部分を同様に「0」に修正します。

$c['validate_referer'] = "0";

このように、HTTPリファラチェック機能は完全なものではなく、今後の開発の中で、より適切な対策を行うように改善していくとのことです。

MODxに対するCSRF攻撃への対策として、0.9.6.2にアップグレードし、HTTPリファラチェック機能を有効にすること、あるいは、必要な操作が完了した後には、必ずログアウトすることが望まれます。

PR

  • KAGOYA
  • ASP at AKIHABARA Japan
  • CMS AWARDS 2007 Winner
ページトップへ