SOAtest の侵入テストは、さまざまな攻撃シナリオを生成し、機能テスト スイートに対して実行することができます。
侵入テストの攻撃設定
機能テスト シナリオに対して攻撃をシミュレートするように SOAtest を設定するには、以下の操作を行います。
- [Parasoft] > [テスト コンフィギュレーション] を選択し、テスト コンフィギュレーション マネージャーを開きます。
- [新規] をクリックして新しいテスト コンフィギュレーションを作成します。
- テスト コンフィギュレーションに分かりやすい名前を付けます。
- [実行] > [セキュリティ] タブをクリックします。
- [侵入テストの実行] チェックボックスをオンにします。
- ルール ツリーを使って、実行する攻撃を指定します。
利用可能な攻撃
SOAtest は以下の攻撃をシミュレートすることができます。
攻撃 | 説明 |
---|---|
Parameter Fuzzing | Web サービスへの入力パラメーターが適切に検証されない場合、背後にあるシステムでの脆弱性につながることがあります。ネイティブ アプリケーションでは、入力パラメーターのデータ サイズがチェックされないと、バッファー オーバーフロー攻撃が起こることがあります。このような脆弱性によって、システムがクラッシュしたり、クライアント アプリケーションに未承認の情報が返されることすらあります。 |
SQL インジェクション | ソフトウェアが実行されるときに、SQL 文が動的に作成される場合、SQL 文に固定入力を渡して SQL 文の一部とすることで、セキュリティ侵害の機会が発生します。攻撃者は、機密データへのアクセス、適切なパスワードなしでのパスワード保護領域へのログイン、データベース テーブルの削除、データベースへの新規エントリの追加を実行できるだけでなく、admin 権限でのアプリケーションでのログインさえも実行することができます。 |
Username Harvesting | 誤ったユーザー名やパスワードを含むリクエストには、ユーザー名が不正かどうかを示すレスポンスを返すべきではありません。そのようなレスポンスは、攻撃者が有効なユーザー名を特定してユーザー名からパスワードを推測するのを容易にします。 |
XPath インジェクション | XPath インジェクションは、特定の形式のコード インジェクション攻撃であるという点で、SQL インジェクションと似ています。XPath を使用すると、特定の条件に一致するノードを XML ドキュメント中でクエリーできます。そのようなクエリーが、無効な入力を使ってアプリケーション コードで (文字列連結を用いて) 動的に作成される場合、攻撃者は XPath クエリーをインジェクトして不正にデータを取得することができます。 |
クロス サイト スクリプティング | クロス サイト スクリプティングの問題は、ユーザーが変更可能なデータが一字一句そのまま HTML に出力される場合に発生します。したがって、攻撃者は悪意のあるコードを含むスクリプト タグをサブミットでき、これはクライアント ブラウザーで実行されます。攻撃者は、サイトの書き換え、正規ユーザーの証明書の盗用、プライベート データへのアクセスを実行することができます。 |
XML Bombs | XML ドキュメント内で DTD (Document Type Definition) を使用している場合、パースされると指数関数的に多数の XML 要素に急速に増大する再帰的エンティティ宣言を定義することで、サービス拒否攻撃を実行することができます。これは XML パーサーのリソースを消費し、サービスの拒否を引き起こします。 |
外部エンティティ | XML には、実際のデータが存在する URI を指定することで動的にデータを作成するという機能があります。 攻撃者は、収集されるデータを悪意のあるデータで置き換えることができます。この URI で Web サービスのファイル システム上にあるローカルな XML ファイルをポイントして、大量のデータを XML パーサーに読み込ませたり、機密情報を盗んだりすることができます。あるいは、他のサーバーの URL を指定することで、不正アクセスしたシステムを攻撃者として、他のサーバーに対して DoS 攻撃を開始することもできます。 |
スキーマが無効な XML | 整形式のドキュメントは、必ずしも有効なドキュメントではありません。 DTD またはスキーマを参照していない場合、XML ドキュメントが有効かどうかを検証する方法がありません。 したがって、XML ドキュメントが DTD またはスキーマを参照していることを保証するために、対策を講じる必要があります。 |
巨大な XML ドキュメント | 巨大なペイロードを使って、2 種類の方法で Web サービスを攻撃することができます。 1 つ目として、SOAP リクエストで巨大な XML ペイロードを送信することで (特にリクエストが整形式の SOAP リクエストで、スキーマに対して検証する場合)、Web サービスを渋滞させることができます。 2 つ目として、巨大なレスポンスを招くある種のリクエスト クエリーを送信することで、巨大なペイロードを引き起こすことができます。 |
不正な形式の XML | 不正な形式で、許容されない、あるいは予期しないコンテンツがある XML 要素は、サービスの失敗を引き起こすことがあります。 |
攻撃文字列のカスタマイズ
以下のディレクトリにある .csv ファイルを変更して、攻撃に使用する攻撃文字列をカスタマイズすることができます。
<INSTALL>/plugins/com.parasoft.ptest.libs.web_<VERSION>/root/security
テストの実行
侵入テストを実行するには、次の操作を行います。
- 攻撃するテスト スイートを選択します。
- 侵入テスト用のテスト コンフィギュレーションを実行します (「侵入テストの攻撃設定」を参照)。
結果の参照と検証
結果は、[SOAtest] タブおよび生成されたレポートに表示されます。
このメッセージをダブルクリックすると (または右クリックして [詳細の表示] を選択すると)、失敗を引き起こした攻撃についての情報が表示されます。
追加検証
ニーズに合わせて、さらに検証を行うことができます。たとえば、テスト スイートに Coding Standards、Search、XML Validator ツールなどを連結して、サーバー ログを手動で調査したり、サーバー ログを解析するスクリプトを実行したりできます。
攻撃トラフィックの参照
各テストの Traffic Viewer を使用すると、攻撃トラフィックを参照することができます。[攻撃] および [反復] オプションを使って、すべての攻撃のトラフィックや特定の攻撃タイプのトラフィックを表示できます。また、特定の攻撃値のトラフィックだけを表示することもできます。
攻撃するパラメーターの設定
デフォルトでは、 選択したテスト スイートの SOAP Client、REST Client、Messaging Client、および Browser Playback ツールで表示されるすべての利用可能なパラメーターに対して、SOAtest は攻撃を試みます。
どのパラメーターを攻撃するかをカスタマイズするには、次の操作を行います。
- 攻撃する機能テストの最上位のテスト スイート ノードをダブルクリックします。
- 一番右にある [セキュリティ オプション] タブを開きます。
- [侵入テスト パラメーター] で、攻撃するパラメーターを指定します。
- テスト スイートの設定を保存します。