攻撃スコアの トラフィック検出 は、機械学習アルゴリズムで各リクエストを分類します。悪意のあるリクエストである可能性に基づき、1 から 99 のスコアを付けます。この検出は WAF Managed Rules を補完します。
Managed Rules は、確立された攻撃手法の具体的なパターンである既知の攻撃シグネチャとリクエストを照合します。誤検知率はとても低いです。ただし攻撃者は、たとえばファジング(改変した入力を送って脆弱性を探すテスト手法)で既知のペイロードを改変し、完全一致を回避できます。
攻撃スコアは、この不足を補います。WAF Managed Rules のどのルールにも完全一致しない、悪意のある可能性があるトラフィックを、スコアで特定できます。
最大限の保護のため、Cloudflare は Managed Rules と攻撃スコアの併用を推奨します。
Cloudflare WAF は、次の攻撃スコアフィールドを提供します。
| フィールド | 説明 | 必要なプラン |
|---|---|---|
WAF Attack Score cf.waf.score Number |
各 WAF 攻撃ベクトルのスコアを 1 つのスコアにまとめた、1〜99 の総合スコアです。 | Enterprise |
WAF SQLi Attack Score cf.waf.score.sqli Number |
SQL インジェクション ↗(SQLi)攻撃ベクトルを 1〜99 で分類するスコアです。 | Enterprise |
WAF XSS Attack Score cf.waf.score.xss Number |
クロスサイトスクリプティング ↗(XSS)攻撃ベクトルを 1〜99 で分類するスコアです。 | Enterprise |
WAF RCE Attack Score cf.waf.score.rce Number |
コマンドインジェクションまたは リモートコード実行 ↗(RCE)攻撃ベクトルを 1〜99 で分類するスコアです。 | Enterprise |
WAF Attack Score Class cf.waf.score.class String |
WAF 攻撃スコアに基づく、現在のリクエストの攻撃スコアクラスです。 取りうる値は attack、likely_attack、likely_clean、clean です。 |
Business 以上 |
これらのフィールドは、カスタムルール と レート制限ルール の式で使えます。数値スコアの範囲は 1 から 99 です。
- スコア
1は、リクエストがほぼ確実に悪意のあるものであることを示します。 - スコア
99は、リクエストがクリーンである可能性が高いことを示します。
スコア 100 は、リクエストが WAF 攻撃スコアの仕組みに到達したものの、スコアを付けなかったことを意味します。
Logpush のデータでは、スコア 0 はリクエストが攻撃スコアの段階に到達しなかったことを意味します。たとえば、先行するルールや防御の仕組みがすでに緩和したためです。値 0 は Cloudflare ダッシュボードには表示されません。
総合の WAF Attack Score は、個別の攻撃スコア(SQLi Attack Score や XSS Attack Score など)から数学的に導出され、それらの相互関係を反映します。ただし、総合スコアは個別スコアの合計ではありません。総合スコアが低い場合は、個別スコアも中程度から低めであることが多く、総合スコアが高い場合は個別スコアも高めです。
WAF Attack Score Class フィールドは、算出されたリクエストの攻撃スコアに応じて、次のいずれかの値になります。
| ダッシュボードのラベル | フィールド値 | 説明 |
|---|---|---|
| Attack | attack |
攻撃スコアが 1 から 20 です。 |
| Likely attack | likely_attack |
攻撃スコアが 21 から 50 です。 |
| Likely clean | likely_clean |
攻撃スコアが 51 から 80 です。 |
| Clean | clean |
攻撃スコアが 81 から 99 です。 |
特別な攻撃スコア 100 のリクエストは、Cloudflare ダッシュボードでは WAF Attack Score Class が Unscored と表示されます。ただし、このクラス値はルール式では使えません。
攻撃スコアは、リクエストの URL、ヘッダー、本文のどこにあっても、Base64、JavaScript(Unicode エスケープシーケンス)、URL エンコードされた内容を自動で検出してデコードします。
攻撃スコアが 50 未満のトラフィックを、スコアだけを根拠にすべてブロックすることは推奨しません。Likely attack の範囲(スコア 21〜50)には、悪意があると誤判定された正当なリクエスト(誤検知)が含まれることがあります。攻撃スコアでブロックする場合は、次のいずれかを行います。
-
式では、より厳しい WAF Attack Score の値を使います。たとえば、WAF 攻撃スコアが
20未満、または15未満のトラフィックをブロックします(しきい値は調整が必要な場合があります)。 -
受信トラフィックをブロックするときは、高めの WAF Attack Score しきい値を、追加のフィルターと組み合わせます。たとえば、式に特定の URI パスの条件を入れる、または判定条件の一部にボットスコアを使います。
Enterprise のお客様は、WAF Attack Score が 20 以下(推奨する初期しきい値)のリクエストをブロックする カスタムルールを作成 できます。例:
| フィールド | 演算子 | 値 |
|---|---|---|
| WAF Attack Score | less than or equal to | 20 |
- 同等のルール式:
cf.waf.score le 20 - アクション: Block
Business のお客様は、代わりに WAF Attack Score Class フィールドでカスタムルールを作成します。たとえば、このフィールドを使ってスコアクラスが Attack の受信リクエストをブロックします。
| フィールド | 演算子 | 値 |
|---|---|---|
| WAF Attack Score Class | equals | Attack |
- 同等のルール式:
cf.waf.score.class eq "attack" - アクション: Block
作成したルールを監視します。とくに最初の数日は、トラフィックに対してしきい値(またはクラス)が適切かを確認します。必要ならルールを更新します。
Enterprise のお客様で、アクションが Log のルールを作成した場合は、Managed Challenge や Block など、より厳しいアクションに変更します。
WAF 攻撃スコアと ボットスコア の目的は異なります。攻撃スコアは、WAF Managed Rules が見逃す攻撃のバリエーションを特定します。ボットスコアは、リクエストが自動トラフィックかどうかを特定します。