ratproxy――Webアプリケーションのセキュリティレベルを検証するGoogle提供ツールPrograming Bible(1/2 ページ)

先日Googleからリリースされたプロキシ型の脆弱性発見ツール「ratproxy」。高度に複雑化した最近のWebアプリケーションのセキュリティ試験を行う際に役立つ同ツールを使ってみた。

» 2008年08月14日 12時52分 公開
[Keith-Winston,Open Tech Press]
SourceForge.JP Magazine

 Webアプリケーション開発者によるセキュリティレベルの検証作業をサポートすることを目的として、ratproxyと呼ばれるオープンソース型ツールが先日Googleからリリースされた。これはWeb2.0およびAJAXアプリケーションを対象に構築された非破壊型の検査ツールであり、セキュリティ上の問題点が可読性に優れた形式でリポートされるようになっている。

  ratproxyの実体は、手元のWebブラウザと試験対象のアプリケーションとの間に介在する形で動作するローカルプログラムである。その動作原理は、アプリケーションから出されるリクエストと返されるレスポンスを追跡し、それを基に独自に変換したトランザクションを適用することで、一般的な攻撃に対して当該アプリケーションがどのような反応をするかを検証するというシステムになっている。例えばローレベルテストでは、後記のものを含めた包括的な試験が実施される。

  • 潜在的な危険性を有すJSON風のレスポンス
  • 秘匿性の高いコンテンツに対して有害なキャッシングヘッダ
  • 疑わしいクロスドメインの信頼関係
  • 不十分なXSRF対策に関係するクエリ
  • 疑惑ないし確証のあるXSSおよびデータ注入ベクタ

 そのほかにも多数の試験が実施されるが、そのすべてはパッケージに同梱されたmessages.listに一覧されるようになっている。

 ratproxyのパッケージはソースコードと関連ドキュメントで構成されているが、そのほかにflare-distと呼ばれるAdobe Flashコンテンツ試験用のオプションコンポーネントが1つ含まれている。また標準的なMakeファイルも同梱されているが、設定スクリプトは用意されていない。このプログラムをビルドするには、通常の手順に従ってmakeを実行すればいい。

$ make cc ratproxy.c -o ratproxy -Wall -O3 -Wno-pointer-sign -D_GNU_SOURCE http.c mime.c ssl.c -lcrypto -lssl *** WARNING: flare-dist/flare bianry is not operational. *** Please see flare-dist/README and update it for your OS.


 ここでの実行例では警告メッセージが出されているが、これはMac OS X上でコンパイルを試みたのに、パッケージ中に用意されるFlash試験用コンポーネントのflash-distがLinuxバージョンとなっているためである。実際、今回わたしが行うテストには不要だったが、OS X対応版のflash-distも用意されている。こうしたコンパイル結果として生成されるのが、ratproxyという単一のバイナリファイルである。

 ratproxyを最初に使用する場合は、スタートアップ用に推奨されたパラメータ群をそのまま使用するのが一番お手軽である。このうち-dパラメータは特定ドメインのURL群に対してのみ試験を実行させる指定で、これにより画像や広告サイトについてのリンク先は試験の範囲外とされる。同じく-vパラメータはトレースファイルの書き込み先を指定し、-wパラメータはログレコードの書き込み先を指定する際に使用する。後者のログレコードは、詳細リポートの作成時に使用されるものである。

$ ./ratproxy -v /tmp/ -w ratlog.txt -d mydomain.com -lfscm ratproxy version 1.51-beta by [*] Proxy configured successfully. Have fun, and please do not be evil. [+] Accepting connections on port 8080/tcp (local only)...


 ratproxyには非破壊モード以外の試験オプションも用意されているが、スタートアップ用の推奨パラメータ設定を利用した場合この機能は有効化されない。なお先の出力例にも出されている“Accepting connections”はratproxyがローカルにて実行中であることを示すメッセージで、その場合はデフォルトポートの8080を使用したWeb ブラウザ接続に対するリスニングが実施される。

 次にWebブラウザを起動して、127.0.0.1:8080を介したratproxyとの接続設定を施す。そして各自の開発したアプリケーションを呼び出し、通常行うはずの操作手順を実施することになるが、その際にはすべての構成ページにアクセスして、すべての機能を実行しなければならない。ratproxyはこうした当該アプリケーションの操作中に、必要な試験を実施していく。アプリケーションに対するすべての操作が完了したらブラウザを閉じればいいが、ratproxyを停止させるにはCtrl-Cのキー操作が必要である。

       1|2 次のページへ

Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ