Skip to main content

ルートカバレッジ

Assessユーザーの場合、ルートカバレッジは、脆弱性を発信元のWebリクエスト、非HTTPリクエスト、またはミドルウェア機能からのリクエストに関連付けます。

備考

HTTP以外のリクエストとミドルウェア機能のルートカバレッジ機能を有効にするには、 にお問い合わせください。 コントラストのサポート

Javaの場合、この機能はJavaエージェント6.18.1以降に対応しています。

ルートカバレッジによって、どのルートが疎通されていて、どのルートが疎通されていないかなど、アプリケーションのコンポーネントに関する詳細な情報を確認できます。これは、どこにテストや修復を重点的に行うかを判断するのに役立ちます。

ルートカバレッジの仕組み

Contrastエージェントが起動すると、アプリケーションの実行中に、エージェントがWebリクエスト、非HTTPリクエスト、およびミドルウェア関数の脆弱性を評価できるように、アプリケーション内の関数を計測します。関数がリクエストを処理するためのフレームワークを実装している場合、Contrastはリクエストが処理される前にルートを特定できます。そのようなルートは、Contrastでは検出済というステータスになります。

アプリケーションがリクエストを処理すると、そのアクティビティはContrastによって観察されて、疎通済ルートとなります。

HTTPルートの例

HTTPルートは、以下の要素の組み合わせです。

  • HTTP動詞(例、GET)

  • リソースのパス(例、/users)

  • コントローラのメソッドシグネチャ(例、UserController.users(Bool active))

    シグネチャが意味をなさない場合には、route.jsproute.xhtml/route/id/{id)など、必要に応じてメソッドシグネチャの代わりにルートテンプレートが使用されます。

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) {
        ...
    }
}

フレームワークとテクノロジ

Contrastでは、以下のフレームワークのルート検出をサポートします。

お使いのフレームワークがサポートされていない場合は、サポートまでお問い合わせください。サポート対象外のフレームワークの場合、Contrastでは観測されたリクエストに基づいてルートを推測しようとうとしますが、ルートは検出されずContrastには表示されません。

対象外(内蔵されたルートやアプリケーション)

Contrastのルートカバレッジには、一部のWebフレームワークやアプリケーションに内蔵されたルートは含まれません。例:

  • JavaアプリケーションのJerseyフレームワークには、WADLファイルを提供するため機能があり、そのルートが内蔵されています。このルートは、Contrastのルートカバレッジ には含まれません。他のWebフレームワークにも同様に、フレームワークに内蔵されているルートがあります。

  • Contrast Javaエージェントは、Tomcatの管理マネージャ(Tomcat Manager Application)などの備え付けのアプリケーションからのルートを報告しません。