カスタム攻撃ディテクタ¶
Wallarmは、正規表現で表現される独自の攻撃兆候を定義するためのCreate regexp-based attack indicatorルールを提供します。
ルールの作成と適用¶
独自の攻撃ディテクタを設定して適用するには:
-
Proceed to Wallarm Console:
- Rules → Add rule or your branch → Add rule.
- Attacks / Incidents → attack/incident → hit → Rule.
- API Discovery (if enabled) → your endpoint → Create rule.
-
Mitigation controls → Custom attack detectorを選択します。
-
If request isで、ルールを適用する対象を記述します。
-
攻撃インジケーターのパラメータを設定します:
-
Regular expression - 正規表現(シグネチャ)です。以下のパラメータの値がこの式に一致する場合、そのリクエストは攻撃として検知されます。正規表現の構文と注意点はルール追加の手順で説明しています。
ルールで指定した正規表現の変更
既存のCreate regexp-based attack indicatorタイプのルールで指定された正規表現を変更すると、以前の正規表現を使用しているDisable regexp-based attack detectionルールが自動的に削除されます。
新しい正規表現による攻撃検知を無効化するには、新しい正規表現を指定したDisable regexp-based attack detectionルールを新規作成してください。
-
Experimental - このフラグを有効にすると、リクエストをブロックせずに正規表現の発火を安全に確認できます。フィルタノードがblockingモードに設定されている場合でも、これらのリクエストはブロックされません。これらのリクエストは実験的手法で検知された攻撃として扱われ、既定ではイベント一覧から非表示になります。検索クエリ
experimental attacks
で表示できます。 -
Attack - リクエスト内のパラメータ値が正規表現に一致したときに検知する攻撃の種類です。
-
-
In this part of requestで、攻撃兆候を検索したいリクエストの各部を指定します。
ルール例¶
不正なX-AUTHENTICATION
ヘッダーを含むすべてのリクエストをブロックする¶
Let us say your application accessible at the example.com
domain uses the X-AUTHENTICATION
header in 32 hex symbols format for user authentication and you want to reject incorrect format tokens.
To do so, set the Create regexp-based attack indicator rule and set it to Virtual patch as displayed on the screenshot, including:
-
Regular expression:
^(.{0,31}|.{33,}|[^0-9a-fA-F]+)$
-
Request part:
header
-X-AUTHENTICATION
ボディパラメータにclass.module.classLoader.*
を含むすべてのリクエストをブロックする¶
Spring Core Framework(Spring4Shell)にはゼロデイ脆弱性があり、次のボディパラメータに悪意あるペイロードを注入したPOSTリクエストを送ることで悪用される可能性があります:
-
class.module.classLoader.resources.context.parent.pipeline.first.pattern
-
class.module.classLoader.resources.context.parent.pipeline.first.suffix
-
class.module.classLoader.resources.context.parent.pipeline.first.directory
-
class.module.classLoader.resources.context.parent.pipeline.first.prefix
-
class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat
脆弱なSpring Core Frameworkを使用していて、Wallarm nodeのmodeがblocking以外の場合は、バーチャルパッチを使用して脆弱性の悪用を防止できます。次のルールは、monitoringおよびsafe blockingモードでも、上記のボディパラメータを含むすべてのリクエストをブロックします:
正規表現フィールドの値は次のとおりです:
(class[.]module[.]classLoader[.]resources[.]context[.]parent[.]pipeline[.]first[.])(pattern|suffix|directory|prefix|fileDateFormat)
Wallarm nodeがblockingmodeで動作している場合、このような脆弱性の悪用試行は既定でブロックされます。
Spring Cloud Functionコンポーネントにも既知の脆弱性(CVE-2022-22963)があります。このコンポーネントを使用していてWallarm nodeのmodeがblocking以外の場合は、以下のとおりバーチャルパッチを作成してください。
CLASS-CLOUD-FUNCTION-ROUTING-EXPRESSION
ヘッダーを含むすべてのリクエストをブロックする¶
Spring Cloud Functionコンポーネントには既知の脆弱性(CVE-2022-22963)があり、CLASS-CLOUD-FUNCTION-ROUTING-EXPRESSION
またはCLASS.CLOUD.FUNCTION.ROUTING-EXPRESSION
ヘッダーに悪意あるペイロードを注入することで悪用される可能性があります。
このコンポーネントを使用していてWallarm nodeのmodeがblocking以外の場合は、バーチャルパッチで悪用を防止できます。次のルールは、CLASS-CLOUD-FUNCTION-ROUTING-EXPRESSION
ヘッダーを含むすべてのリクエストをブロックします:
CLASS.CLOUD.FUNCTION.ROUTING-EXPRESSION
ヘッダーを持つリクエストのブロックについて
このルールはCLASS.CLOUD.FUNCTION.ROUTING-EXPRESSION
ヘッダーを持つリクエストをブロックしませんが、NGINXは既定でこのヘッダーを持つリクエストを無効なものとして破棄します。
Wallarm nodeがblockingmodeで動作している場合、このような脆弱性の悪用試行は既定でブロックされます。
Spring Core Framework(Spring4Shell)にもゼロデイ脆弱性があります。正規表現ベースのバーチャルパッチでその悪用試行をブロックする方法をご確認ください。
部分的な無効化¶
作成したルールを特定のブランチで部分的に無効化する必要がある場合は、次のフィールドでDisable regexp-based attack detectionルールを作成することで簡単に実現できます:
-
Regular expression: 無視する必要がある既存の正規表現を選択します。
正規表現を変更した場合のルールの挙動
既存のCreate regexp-based attack indicatorタイプのルールで指定された正規表現を変更すると、以前の正規表現を使用しているDisable regexp-based attack detectionルールが自動的に削除されます。
新しい正規表現による攻撃検知を無効化するには、新しい正規表現を指定したDisable regexp-based attack detectionルールを新規作成してください。
-
in this part of request: 例外を設定する必要があるパラメータを指定します。
例: 指定したURLに対して不正なX-Authenticationヘッダーを許可する
example.com/test.php
でスクリプトを運用していて、そのトークン形式を変更したいとします。
該当のルールを作成するには:
-
Rules tabに移動します。
-
example.com/test.php
のブランチを探すか作成し、Add ruleをクリックします。 -
Fine-tuning attack detection → Disable custom attack detectorを選択します。
-
無効化したい正規表現を選択します。
-
項目を
Header X-AUTHENTICATION
に設定します。 -
Createをクリックします。
ルールを作成するAPI呼び出し¶
正規表現ベースの攻撃インジケーターを作成するには、Wallarm APIを直接呼び出すことができます。