コンテンツにスキップ

列挙攻撃の保護

Wallarmは、攻撃者にとって高い価値を持つ情報の漏えいを防ぐため、APIを列挙攻撃から保護します。攻撃者は有効なユーザー名やメールアドレス、システムリソースを特定することで、後続攻撃の焦点を大幅に絞り込めます。この偵察フェーズにより、攻撃者は対象システムの理解を深め、脆弱性を発見し、より巧妙で標的化された攻撃を計画できる可能性が高まり、最終的に侵害成功の確率が上がってしまいます。

NGINX Node 6.0.1またはNative Node 0.14.1以上が必要です。

緩和コントロール

Wallarmは、列挙からの保護を構成するための複数の緩和コントロールを提供します。どのコントロールを使用するか選択する際は、次を考慮してください。

コントロール 特記事項 列挙対象 攻撃
Brute force protection 指定した時間枠内に各パラメータで観測されたユニーク値の数をカウントします。 password Brute force
BOLA protection object ID, user ID BOLA
Enumeration attack protection 任意のパラメータ Enum
Forced browsing protection 設定した時間枠内にアクセスされたユニークなエンドポイント数をカウントします。 URLs Forced browsing

したがって:

  • 非公開URLの列挙を防ぎたい場合は、Forced browsing protectionコントロールを使用します。

  • 任意のパラメータの列挙を防ぎたい場合は、Enumeration attack protectionコントロールを使用できます(オールインワンの解決策です)。

  • さまざまな候補を試して有効なパスワードを得ようとする試行を強調表示したい場合は、Brute force protectionコントロールを使用します。

  • 有効なユーザーIDやオブジェクトIDの列挙を特に強調表示したい場合は、BOLA protectionコントロールを使用します。

従来の機能

緩和コントロールは、Advanced API Securityサブスクリプションで利用できる高度なツールです。Cloud Native WAAPサブスクリプションでは、brute force protectionforced browsing protection、およびBOLA protectionはトリガーで構成します。

デフォルト保護

Wallarmは、列挙保護のためのデフォルトの緩和コントロールを提供します。デフォルトコントロールは複製・編集、または無効化できます。

Subject to change

The list of default mitigation controls is subject to change:

  • New controls may be introduced over time.
  • If a mitigation control is disabled, Wallarm may still update its parameters to improve quality and performance.

Brute force

Brute force protectionデフォルト緩和コントロールは、パスワード、OTP、認証コードの列挙の試行を検知するための汎用的な構成を提供し、すべてのトラフィックに対してMonitoringmodeで有効化されています。

Brute forceのデフォルトコントロールを確認するには、Wallarm Console → Security ControlsMitigation ControlsBrute force protectionセクションで、Defaultラベルの付いたコントロールを確認します。

編集により、アプリケーションの特性、トラフィックパターン、ビジネス状況に合わせてデフォルトコントロールをカスタマイズできます。たとえば、しきい値を調整できます。

BOLA

BOLA protectionデフォルト緩和コントロールは、ユーザーID、オブジェクトID、ファイル名の列挙の試行を検知するための汎用的な構成を提供し、すべてのトラフィックに対してMonitoringmodeで有効化されています。

BOLAのデフォルトコントロールを確認するには、Wallarm Console → Security ControlsMitigation ControlsBOLA protectionセクションで、Defaultラベルの付いたコントロールを確認します。

編集により、アプリケーションの特性、トラフィックパターン、ビジネス状況に合わせてデフォルトコントロールをカスタマイズできます。たとえば、しきい値や列挙対象として追跡するパラメータを調整できます。

汎用の列挙

Enumeration attack protectionデフォルト緩和コントロールは、次の列挙の試行を検知するための汎用的な構成を提供します。

  • ユーザー/メールアドレスの列挙

  • SSRF(Server-Side Request Forgery)の列挙

  • User-Agentのローテーション

これは、すべてのトラフィックに対してMonitoringmodeで有効化されています。

汎用の列挙に関するデフォルトコントロールを確認するには、Wallarm Console → Security ControlsMitigation ControlsEnumeration attack protectionセクションで、Defaultラベルの付いたコントロールを確認します。

編集により、アプリケーションの特性、トラフィックパターン、ビジネス状況に合わせてデフォルトコントロールをカスタマイズできます。たとえば、しきい値や列挙対象として追跡するパラメータを調整できます。

Forced browsing

Forced browsing protectionデフォルト緩和コントロールは、非公開URLの列挙の試行を検知するための汎用的な構成を提供し、すべてのトラフィックに対してMonitoringmodeで有効化されています。

Forced browsingのデフォルトコントロールを確認するには、Wallarm Console → Security ControlsMitigation ControlsForced browsing protectionセクションで、Defaultラベルの付いたコントロールを確認します。

編集により、アプリケーションの特性、トラフィックパターン、ビジネス状況に合わせてデフォルトコントロールをカスタマイズできます。たとえば、しきい値やScopeを調整できます。

構成

次の手順で列挙からの保護を構成します。

  • コントロールを適用するScope(エンドポイント、特定のリクエストのみ)を定義します。

  • 列挙の試行を追跡する対象としてEnumerated parametersを選択します。

  • Enumeration thresholdを設定します(しきい値を超えるとコントロールが動作します)。

  • Scopeでニーズをすべて満たせない場合は、Scope filtersを設定します。

  • Mitigation modeでアクションを設定します。

スコープや詳細条件の設定、列挙対象パラメータの選択には、正規表現を使用できます。

Scope

Scopeは、どのリクエストにコントロールを適用するか(URIやその他のパラメータに基づく)を定義します。ルールにおけるリクエスト条件と同じ要領で構成します。詳細はこちらをご覧ください。

Scopeセクションを空のままにすると、緩和コントロールはすべてのトラフィックおよびすべてのアプリケーションに適用され、そのようなコントロールはすべてのbranchesに継承されます。

Scope filters

Scopeだけでは要件を満たせない場合、保護メカニズムの対象となるリクエストが満たすべき追加条件を定義できます。

条件として、次の値や値パターンを使用できます。

  • リクエストの組み込みパラメータ(Wallarmフィルタリングノードが処理する各リクエストに含まれるメタ情報の要素)

  • Session context parametersAPI Sessions重要として定義されたパラメータを一覧からすばやく選択)— このセクションのAdd customオプションを使用して、現在API Sessionsに存在しないパラメータをフィルターとして追加できます。その場合、これらのパラメータはAPI Sessionsのコンテキストパラメータにも追加されます(非表示。つまり、リクエストに含まれていればセッション詳細で確認できますが、API Sessionのcontext parameter configurationには表示されません)。

パフォーマンスに関する注意

Scopeの設定はパフォーマンス面で負荷が小さいため、目的を満たせる場合はScopeを優先して使用し、複雑な条件付けが必要な場合のみScope filtersを使用することを推奨します。

Enumerated parameters

Enumerated parametersセクションでは、列挙を監視するパラメータを選択します。正確一致またはregexによる一致のいずれかで監視対象のパラメータ群を選択します(1つの緩和コントロール内ではどちらか一方のみ使用できます)。

正確一致の場合、Add customオプションを使用して、現在API Sessions存在しないパラメータを列挙対象として追加できます。その場合、これらのパラメータはAPI Sessionsのコンテキストパラメータにも追加されます(非表示。つまり、リクエストに含まれていればセッション詳細で確認できますが、API Sessionのcontext parameter configurationには表示されません)。

regexでFilter by parameter nameFilter by parameter valueの両方を指定した場合、それらは組み合わされます(AND演算子)。例えば、nameに(?i)id、valueに\d*を指定するとuserIdパラメータに一致しますが、パラメータ値が数字の組み合わせであるリクエストのみをカウントします。

リクエストがScopeScope filtersを満たし、かつ列挙監視対象パラメータに対してユニーク値を含む場合、そのパラメータのカウンタは+1されます。

Enumeration threshold

Brute force, BOLAおよび汎用の列挙保護

これらの保護は、指定した時間枠(秒)内に各列挙パラメータで観測されたユニーク値の数をカウントします。Enumerated parametersに列挙された各パラメータは独立して追跡されます。

いずれかのパラメータでしきい値に達すると、WallarmはMitigation modeに従ってアクションを実行します。

Forced browsing protection

この保護は、設定した時間枠(秒)内にアクセスされたユニークなエンドポイント数をカウントします。しきい値に達すると、WallarmはMitigation modeに従ってアクションを実行します。

Mitigation mode

いずれかのカウンタがしきい値を超えた場合、選択したアクションが実行されます。

  • Monitoring — 攻撃として記録され、この攻撃に属するリクエストはAPI SessionsBrute forceForced browsingBOLA、または汎用のEnum攻撃に属するとマークされますが、リクエストはブロックされません。

  • BlockingBlock IP address — 攻撃として記録され、この攻撃に属するリクエストはAPI Sessionsで該当攻撃に属するとマークされます。これらのリクエストの送信元IPは、選択した期間、denylistに追加されます。

正規表現

ScopeセクションではPIRE正規表現ライブラリを使用し、詳細条件ではPCREを使用します。正規表現を使用する際は、次の演算子を使用します。

Operator 説明
~ (Aa) 大文字小文字を区別しない正規表現で一致を検索します。
!~ (Aa) 大文字小文字を区別しない正規表現で一致を除外します。
~ 大文字小文字を区別する正規表現で一致を検索します。
!~ 大文字小文字を区別する正規表現で一致を除外します。

例えば、eコマースのE-APPCアプリケーションでは、各ユーザーの注文情報を/users/*/ordersに保存しているとします。攻撃者は数字のさまざまな組み合わせを試すスクリプトで、注文IDの一覧を取得できる可能性があります。これを防ぐには、各ユーザーアカウント配下に注文を保存するルートに対して、in minutemore than 2 unique valuesというカウンタを設定します。これを超えた場合、その活動をオブジェクト(ユーザーの注文)のIDを列挙しようとする試み(BOLA攻撃)としてマークし、送信元IPを1時間ブロックします。

そのためには、次のスクリーンショットのようにBOLA protectionの緩和コントロールを構成します。

BOLA保護の緩和コントロール - 例

この例では、パラメータ値のregex\d*は「0個以上の数字」を表し、数字で構成されたオブジェクトIDの列挙を試みていることを示します。

検出された攻撃の表示

列挙攻撃がMitigation modeに従って検出またはブロックされると、API Sessionsセクションに表示されます。

API Sessionsにおける列挙攻撃(Brute force)

該当する攻撃タイプのセッションはAttackフィルターで検索できます。必要に応じて、セッション詳細内でもフィルタリングして、列挙攻撃に関連するリクエストのみを表示できます。