APIインベントリの探索
¶
API Discovery モジュールがエンドポイントのカタログ(APIインベントリ)を構築するとすぐに、Wallarm Console の API Discovery セクションでそれを探索できます。本記事では、発見されたデータをどのように確認するかを解説します。
エンドポイント¶
US または EU の Cloud にある API Discovery セクションを使用して、発見された APIインベントリ を探索できます。
API Discovery セクションを開くたびに、過去1週間の全ての発見されたエンドポイントおよびそれらの 変更 を確認できます。Changes since フィルタを使用することで、Last week
を他の期間に変更できます。
デフォルトでは、エンドポイントはホスト/エンドポイント名でソートされ(ホストごとにグループ化されます)。Hits または Risk でソートするとグループ化が解除されます。デフォルトに戻すには、再度ホスト/エンドポイント列をクリックしてください。
外部 vs. 内部¶
外部ネットワークからアクセス可能なエンドポイントは主要な攻撃経路です。そのため、外部から利用できるエンドポイントを把握し、優先的に注意することが重要です。
Wallarm は発見された API を自動的に外部と内部に分割します。ホストとその全エンドポイントは、以下に該当する場合、内部とみなされます:
-
プライベートIPまたはローカルIPアドレス
-
汎用トップレベルドメイン(例:localhost、dashboardなど)
その他の場合、ホストは外部とみなされます。
デフォルトでは、全ての APIホスト(外部および内部)のリストが表示されます。構築された APIインベントリ では、内部 API と外部 API を個別に確認できます。これを行うには、External または Internal をクリックしてください。
フィルタリング¶
幅広い APIエンドポイントフィルタの中から、分析目的に応じたものを選択できます。例:
-
ヒット数でソート可能な攻撃対象のエンドポイントのみ
-
機微なデータの処理や高いrisk levelの実活性脆弱性に特徴づけられる、最も脆弱なエンドポイントを探す。高いリスクレベルの脆弱性の悪用により、システムに対し、エンドポイントが処理/保存する機微なデータの窃取を含む多くの悪意ある動作が行われる可能性があります。
-
rogue endpoints(shadow、orphan、zombie)を探す。
-
過去1週間に変更または新たに発見された、PIIデータを処理するエンドポイントを探す。このようなリクエストにより、重要なAPIの変更状況を最新に把握できます。
-
PUTまたはPOST呼び出しにより、サーバーへデータアップロードに使用されるエンドポイントを探す。これらのエンドポイントは攻撃対象となりやすいため、チームに認識され、攻撃から十分に保護されているかを確認できます。
-
顧客の銀行カードデータを処理するエンドポイントを探す。このリクエストにより、機微なデータが安全なエンドポイントのみで処理されているかを確認できます。
-
廃止されたAPIバージョンのエンドポイント(例:
/v1
で検索)を探し、クライアントが使用していないことを確認する。
フィルタされた全データは、追加の分析のために OpenAPI v3 としてエクスポートできます。
エンドポイントの詳細¶
エンドポイントをクリックすると、リクエスト統計、リクエストおよびレスポンスヘッダーとパラメータ(該当データ型付き)を含むエンドポイントの詳細を確認できます:
各リクエスト/レスポンスパラメータの情報には以下が含まれます:
-
パラメータ名と、このパラメータが属するリクエスト/レスポンスの部分
-
パラメータの変更情報(新規、未使用)
-
このパラメータで送信される機微なデータの有無と種類。これには以下が含まれます:
- IPやMACアドレスなどの技術データ
- シークレットキーやパスワードなどのログイン認証情報
- 銀行カード番号などの金融データ
- 医療ライセンス番号などの医療データ
- 本名、パスポート番号、またはSSNなどの個人識別情報(PII)
-
このパラメータで送信されるデータの型/フォーマット
-
パラメータ情報の最終更新日時
レスポンスパラメーターの利用可能性
レスポンスパラメータは、node 4.10.1 以上を使用している場合にのみ利用可能です。
型とデータフォーマット¶
Type 列には、Wallarm がトラフィック分析を通じて特定したデータフォーマット、または特定できなかった場合は一般的なデータ型が表示されます。
Wallarm は、Int32
、Int64
、Float
、Double
、Datetime
、IPv4
/IPv6
などの様々なデータフォーマットの検出を試みます。認識されたデータフォーマットに該当しない値は、Integer
、Number
、String
、または Boolean
といった一般的なデータ型に分類されます。
このデータにより、各パラメータに期待されるフォーマットの値が渡されているかを確認できます。不整合は、攻撃やAPIのスキャンの結果である可能性があります。例えば:
-
IP
が必要なフィールドにString
の値が渡される場合 -
Int32
以下の値が求められるフィールドにDouble
の値が渡される場合
多様性¶
URL には、ユーザーIDなどの多様な要素が含まれる場合があります。例えば:
-
/api/articles/author/author-a-0001
-
/api/articles/author/author-a-1401
-
/api/articles/author/author-b-1401
API Discovery モジュールは、このような要素をエンドポイントパス内で {parameter_X}
形式に統一します。したがって、上記の例では3つのエンドポイントではなく、1つのエンドポイントとして扱われます。
/api/articles/author/{parameter_1}
エンドポイントをクリックしてパラメータを展開し、各パラメータに自動的に検出された型を確認してください。
アルゴリズムは新たなトラフィックを解析します。統一されるべきアドレスがまだ統一されていない場合は、しばらく時間をお待ちください。より多くのデータが到着すると、システムは新たに検出されたパターンに一致する適切なアドレス数でエンドポイントを統一します。
エンドポイントのアクティビティ¶
攻撃¶
過去7日間のAPIエンドポイントへの攻撃数は Hits 列に表示されます。フィルタで Others → Attacked endpoints を選択することで、攻撃対象のエンドポイントのみの表示をリクエストできます。
特定のエンドポイントへの攻撃を確認するには、Hits 列の数値をクリックしてください:
Attacks セクションが、フィルタが適用された状態で表示されます:
エンドポイントのURLをクリップボードにコピーして、イベントの検索に利用することもできます。これを行うには、このエンドポイントメニューで Copy URL を選択してください。
全てのアクティビティ¶
エンドポイントに関連する全リクエストの数は Requests 列に表示されます。この数値をクリックすると、過去1週間の該当リクエストを含むユーザーセッションの一覧が表示された API Sessions セクションが開きます。
各セッション内では、初めに対象エンドポイントへのリクエストのみが表示されます。セッション内でエンドポイントフィルタを解除すると、全リクエストがコンテキストとして確認できます。
セッションアクティビティの構造化された表示により、対象エンドポイントが悪意ある活動や正当な活動の中でどの位置にあるか、そのエンドポイントが機微なビジネスフローとどのように関連しているか、また必要な保護措置を把握するのに役立ちます。
APIエンドポイント用ルールの作成¶
APIインベントリ の任意のエンドポイントから、新しいカスタムルールを迅速に作成できます:
-
このエンドポイントメニューで Create rule を選択してください。ルール作成ウィンドウが表示され、エンドポイントアドレスが自動的に入力されます。
-
ルール作成ウィンドウでルール情報を指定し、Create をクリックしてください。
APIインベントリデータのエクスポート¶
API Discovery UI は、現在フィルタされたエンドポイントのリストをOpenAPI v3仕様またはCSVファイルとしてエクスポートするオプションを提供します。
エクスポートするには、Wallarm Console の API Discovery セクションで OAS/CSV オプションを使用してください。以下の点にご注意ください:
-
OAS の場合、Wallarm はフィルタされたエンドポイントを含む
swagger.json
を返します。個々のエンドポイントメニューでも Download OAS ボタンを使用できます
ダウンロードした仕様をPostmanなどの他のアプリケーションで利用することで、エンドポイントの脆弱性検査やその他のテストを実施できます。さらに、エンドポイントの機能を詳細に検証し、機微なデータの処理や未文書化のパラメータの有無を明らかにすることが可能です。 -
CSV の場合、Wallarm はフィルタされたエンドポイントデータをシンプルなテキストのカンマ区切り形式でエクスポートするため、他のプログラムへの取り込みが容易です。
ダウンロードされたSwaggerファイル内のAPIホスト情報
発見されたAPIインベントリに複数のAPIホストが含まれる場合、ダウンロードされたファイルには全てのAPIホストのエンドポイントが含まれます。現在、APIホスト情報はファイルに含まれていません。