Burp Scannerは、JSONベースのAPI定義をスキャンして脆弱性を検出できます。デフォルトでは、クローラが検出したAPI定義を分析して、サポートされているメソッドとパラメーターとともに、潜在的なエンドポイントを識別しようとします。スキャンを開始するときに、API定義のURLを明示的に指定もできます。検出したエンドポイントに基づいて、Burp Scannerは新たにクロールや診断する場所を取得できます。
アプリケーションの他の部分をスキャンする場合と同様に、クロールフェーズで使用されたものと同じ一連のリクエストがAPIエンドポイントの診断にも使用されます。
必要に応じて、スキャン設定でAPI定義の分析クロールオプションの選択を解除すると、APIスキャンを無効にできます。このオプションはその他にあります。
Burp Scannerは、スキャンするためにAPI定義を分析できる必要があります。現在、これは次の要件を満たすAPI定義でのみ可能です:
openapi
を使用します。
これらの要件を満たさない定義は、スキャン中にスキップされます。
クローラがAPI定義を分析するとき、エンドポイントごとに複数の場所を作成する場合がよくあります。エンドポイントが複数のメソッドをサポートしている場合、それぞれに個別の場所が作成されます。同様に、スコープ内に複数のAPIサーバがある場合、単一のメソッドとエンドポイントの組み合わせは、それぞれの異なるサーバへの同じ呼び出しを表す別々の場所が生成されます。
たとえば、特定のエンドポイントがGET
とPUT
メソッド両方をサポートするとします。スコープ内にサーバが1つしかない場合、このエンドポイントから2つの場所が派生します。ただし、サーバが3つある場合は、合計6つの新しい場所になります。
クロール中、各エンドポイントのパラメータが定義される方法は、Burp Scannerが送信するリクエスト数に影響します:
これにより、各エンドポイントを最大限にカバーできます。
各リクエストのパラメータに使用される値も、API定義によって部分的に決定されます。パラメータにサンプル値が指定されている場合、クローラはそれぞれの場合に最後のサンプルを使用します。それ以外の場合は、適切なカスタム値が生成されます。
クローラがAPI定義を分析しようとする場合、次の制限が適用されます。エンドポイントがこれらの制限に準拠していない場合、スキャンから除外されます。いずれの場合も、イベントログをチェックして、特定のエンドポイントがスキップされた理由を確認できます。
array
タイプのクエリまたはボディパラメータ。ただし、このタイプのJSONボディパラメーターはサポートされていることに注意してください。
XML
タイプのクエリまたはボディパラメータ
application/x-www-form-urlencoded
ボディ内のJSONパラメータ、など。
JSON
タイプのクエリパラメータ。ただし、このタイプのボディパラメータはサポートされていることに注意してください。
multipart
タイプのボディパラメータ