ルートカバレッジ
ルートカバレッジにより、Assessユーザは脆弱性と元のWebリクエストを関連付けることができます。
ルートカバレッジによって、どのルートが疎通されていて、どのルートが疎通されていないかなど、アプリケーションのコンポーネントに関する詳細な情報を確認できます。これは、どこにテストや修復を重点的に行うかを判断するのに役立ちます。
Webリクエストの例
Webリクエストは、Webアプリケーションの最も基本となるインターフェイスです。リクエストを処理する関数は、他のサービスやデータベース、ファイルなどと連携を行う後続の関数を呼び出す場合があります。
リクエストを処理するプロセスで、Contrastはアプリケーション全体のデータフローを監視し、脆弱性を特定します。1つのWebリクエストが、複数の種類の攻撃に対して脆弱な場合があります。Contrastでは、これらの脆弱性を元のリクエストに関連付けます。
以下は、Webリクエストの例です。
GET /users?active=true Host: YourDomain.com Accept: application/json
以下は、上記のWebリクエストがどのように関数で処理されるかの例です。
@Controller public class UserController { @GetMapping("/users") public String users(@RequestParam(name="active", required=false, defaultValue=true) Bool active) { ... } }
ルートカバレッジの仕組み
アプリケーションのルートは、次の3つの要素の組み合わせです。
HTTP動詞(例、
GET
)リソースのパス(例、
/users
)コントローラのメソッドシグネチャ(例、
UserController.users(Bool active)
)対応するシグネチャが使用されていない場合には、
route.jsp
、route.xhtml
、/route/id/{id}
など、メソッドシグネチャの代わりにルートテンプレートが使用されます。
Contrastエージェントを起動すると、アプリケーション内の関数にエージェントが組み込まれ、アプリケーションを実行中にWebリクエストの脆弱性が評価されます。関数にWebリクエストを処理するためのフレームワークが実装されていれば、リクエストが処理される前にContrastでルートが識別されます。そのようなルートは、Contrastでは検出済というステータスになります。
アプリケーションがリクエストを処理すると、そのアクティビティはContrastによって観察されて、疎通済ルートとなります。
フレームワーク とテクノロジ
Contrastでは、以下のフレームワークのルート検出をサポートします。
Java:現在サポート対象のテクノロジ
.NET Framework:現在サポートされている全てのフレームワーク
.NET Core:現在サポートされている全てのフレームワーク
Node.js:現在サポートされている全てのフレームワーク
Python:現在サポートされている全てのフレームワーク
Ruby:現在サポートされている全てのフレームワーク
Go: 現在サポートされている全てのフレームワーク
お使いのフレームワークがサポートされていない場合は、サポートまでお問い合わせください。サポート対象外のフレームワークの場合、Contrastでは観測されたリクエストに基づいてルートを推測しようとうとしますが、ルートは検出されずContrastには表示されません。
対象外(内蔵されたルートやアプリケーション)
Contrastのルートカバレッジには、一部のWebフレームワークやアプリケーションに内蔵されたルートは含まれません。 例えば、以下のような場合です。
JavaアプリケーションのJerseyフレームワークには、WADLファイルを提供するため機能があり、そのルートが内蔵されています。このルートは、Contrastのルートカバレッジ には含まれません。他のWebフレームワークにも同様に、フレームワークに内蔵されているルートがあります。
Contrast Javaエージェントは、Tomcatの管理マネージャ(Tomcat Manager Application)などの備え付けのアプリケーションからのルートを報告しません。