Burp Scannerを使用したAPIのスキャン

Burp Scannerは、JSONベースのAPI定義をスキャンして脆弱性を検出できます。デフォルトでは、クローラが検出したAPI定義を分析して、サポートされているメソッドとパラメーターとともに、潜在的なエンドポイントを識別しようとします。スキャンを開始するときに、API定義のURLを明示的に指定もできます。検出したエンドポイントに基づいて、Burp Scannerは新たにクロールや診断する場所を取得できます。

アプリケーションの他の部分をスキャンする場合と同様に、クロールフェーズで使用されたものと同じ一連のリクエストがAPIエンドポイントの診断にも使用されます。

必要に応じて、スキャン設定でAPI定義の分析クロールオプションの選択を解除すると、APIスキャンを無効にできます。このオプションはその他にあります。

APIスキャンの前提条件

Burp Scannerは、スキャンするためにAPI定義を分析できる必要があります。現在、これは次の要件を満たすAPI定義でのみ可能です:

これらの要件を満たさない定義は、スキャン中にスキップされます。

API定義から場所を取得

クローラがAPI定義を分析するとき、エンドポイントごとに複数の場所を作成する場合がよくあります。エンドポイントが複数のメソッドをサポートしている場合、それぞれに個別の場所が作成されます。同様に、スコープ内に複数のAPIサーバがある場合、単一のメソッドとエンドポイントの組み合わせは、それぞれの異なるサーバへの同じ呼び出しを表す別々の場所が生成されます。

たとえば、特定のエンドポイントがGETPUTメソッド両方をサポートするとします。スコープ内にサーバが1つしかない場合、このエンドポイントから2つの場所が派生します。ただし、サーバが3つある場合は、合計6つの新しい場所になります。

APIスキャン中のパラメータ処理

クロール中、各エンドポイントのパラメータが定義される方法は、Burp Scannerが送信するリクエスト数に影響します:

これにより、各エンドポイントを最大限にカバーできます。

各リクエストのパラメータに使用される値も、API定義によって部分的に決定されます。パラメータにサンプル値が指定されている場合、クローラはそれぞれの場合に最後のサンプルを使用します。それ以外の場合は、適切なカスタム値が生成されます。

APIスキャンの制限

クローラがAPI定義を分析しようとする場合、次の制限が適用されます。エンドポイントがこれらの制限に準拠していない場合、スキャンから除外されます。いずれの場合も、イベントログをチェックして、特定のエンドポイントがスキップされた理由を確認できます。