Cloudflareの「スコア」を理解する:ボットスコアと攻撃スコアの違い

はじめに

Cloudflareでセキュリティルールを設定する際、「スコア」という指標が登場しますが、実はボットスコア(Bot Score)と攻撃スコア(Attack Score)*という2種類のスコアがあります。

名前が似ているため混同しやすいですが、それぞれ全く異なる目的で使用されています。この記事では、両者の違いと実際の活用方法について、エンジニア以外の方にもわかりやすく解説します。

2つのスコアの基本的な違い

ボットスコア(Bot Score):「誰が」アクセスしているかを判定

ボットスコアは、アクセスしてきたのが「人間」なのか「ボット(自動化プログラム)」なのかを判定するためのスコアです。

  • 範囲: 1〜99
  • 評価基準: ブラウザの挙動、JavaScript実行、マウス動作、キーボード入力パターンなど
  • 数値の意味: 数値が低いほどボット的、高いほど人間的
  • 主な用途: Bot Management、Super Bot Fight Mode
  • フィールド名: cf.bot_management.score

攻撃スコア(Attack Score):「何を」しようとしているかを判定

攻撃スコアは、そのリクエストが攻撃的な内容を含んでいるかどうかを判定するためのスコアです。

  • 範囲: 1〜99
  • 評価基準: SQLインジェクション、XSS、パストラバーサルなどの攻撃パターン
  • 数値の意味: 数値が低いほど攻撃的、高いほど安全
  • 主な用途: WAF Managed Rules、カスタムルール
  • フィールド名: cf.waf.score(総合)、cf.waf.score.sqli(SQLi特化)など

スコアの分類と閾値

ボットスコアの分類

スコア範囲 分類 説明
1-29 ボットの可能性が高い 自動化されたトラフィックとして扱うべき
30-65 グレーゾーン 慎重な判断が必要な疑わしい領域
66-99 人間の可能性が高い 通常の人間によるアクセスとして扱える

攻撃スコアの分類

スコア範囲 分類 説明
1 非常に高リスク 攻撃の可能性が極めて高い
2-20 高リスク 攻撃の可能性が高く、ブロック推奨
21-50 中リスク 注意が必要なレベル
51-99 低リスク 攻撃の可能性は低い

スコアリングの元になっているデータ

ボットスコア(Bot Score)

  • ブラウザの挙動: JavaScript実行、Canvas/WebGLフィンガープリント
  • ユーザー操作: マウス動作、キーボード入力、スクロールパターン
  • リクエスト特性: User-Agent、HTTPヘッダー、TLS/HTTPフィンガープリント
  • 機械学習: Cloudflare全体の膨大なトラフィックデータから学習

攻撃スコア(Attack Score)

  • リクエスト内容: URL、パラメータ、POSTボディ、HTTPヘッダー
  • 攻撃パターン: SQLインジェクション、XSS、パストラバーサルなどのシグネチャ
  • 機械学習: 過去の攻撃トラフィックの特徴から異常を検知
  • 脅威インテリジェンス: 世界中のCloudflareネットワークで観測された攻撃データ

Cloudflareの強み

世界中のインターネットトラフィックの約20%が通過するCloudflareのネットワークから得られる膨大なデータにより、1つのサイトでの学習が全体の防御力向上に貢献するネットワーク効果が働いています。

実際の活用例

ボットスコアの活用

# 明確なボットトラフィックをブロック
(cf.bot_management.score < 30)

# グレーゾーンにはチャレンジを表示
(cf.bot_management.score >= 30 and cf.bot_management.score < 65)

攻撃スコアの活用

# SQLインジェクション攻撃の可能性が高いものをブロック
(cf.waf.score.sqli < 20)

# 全般的な攻撃パターンに対する防御
(cf.waf.score < 10)

重要なポイント

1. 独立した2つの指標

ボットスコアと攻撃スコアは独立して評価されます。例えば:

  • **人間(ボットスコア高)でも攻撃を試みる(攻撃スコア低)**ことがある
  • **ボット(ボットスコア低)でも正当なアクセス(攻撃スコア高)**をすることがある

2. 数値が低い = 要注意

両方のスコアで共通しているのは、数値が低いほど警戒すべきという点です。

3. 組み合わせて使用可能

より精密なセキュリティ設定のために、両方のスコアを組み合わせることもできます:

# ボットかつ攻撃的なトラフィックをブロック
(cf.bot_management.score < 30 and cf.waf.score < 20)

まとめ

  • ボットスコア: 「誰が」→ 人間かボットかの判定
  • 攻撃スコア: 「何を」→ 攻撃的かどうかの判定
  • 両方とも数値が低い = リスクが高い
  • 目的に応じて適切なスコアを選択し、閾値を設定することが重要

セキュリティルールを設定する際は、この2つのスコアの違いを理解した上で、サイトの特性に合わせた適切な閾値を設定しましょう。

参考資料