ボットフィードバックループ(Bot Feedback Loop)では、Bot Management が誤って スコア付け したリクエストを報告できます。偽陰性または偽陽性のレポートを送ると、Cloudflare がそのデータを分析し、次の機械学習モデルの学習に使います。
ボットフィードバックループは、Enterprise の Bot Management をご利用のお客様向けです。詳細は プラン を参照してください。
ブラウザー、モバイルアプリ、デスクトップアプリを使っている人からのリクエストを、Cloudflare が automated または likely automated の範囲でスコア付けした場合に、偽陽性が起きます。
サイト上の自動トラフィックの一部を Cloudflare が検出できなかった場合、偽陰性レポートを送ると、今後の検出に役立ちます。
| サブタイプ | 定義 |
|---|---|
| アカウント作成の悪用 | サイトのリソースにアクセスするため、多数の新規アカウントを自動作成すること。 |
| 広告詐欺 | 広告のクリック数や表示回数を不正に増やすこと。 |
| クレジットカードの悪用 | 多数のクレジットカード番号、または同じ番号に異なる検証情報を付けて、繰り返し検証しようとすること。 |
| Cashing Out | 対象のインターネットアプリケーションを悪用して、価値のある商品を得ること。 |
| ログインの悪用 | 多数のユーザー名とパスワードの組み合わせで、パスワード保護された部分にアクセスしようとすること。 |
| 在庫の悪用 | 数量限定の在庫の購入や、ほかの人が取引できないように在庫を抑える自動的な悪用。 |
| サービス拒否 | サーバー資源を枯らして、インターネットアプリケーションを動かなくすることを目的とした自動リクエスト。 |
| Expediting | 人間の訪問者より速く取引するため、インターネットアプリケーションの利用を自動化し、不当な優位を得ること。 |
| ファジング | 不正な形式のデータを自動で注入し、実装上のバグを見つけること。 |
| スクレイピング | インターネットアプリケーションから、価値のある情報や独自情報を自動で取得すること。 |
| スパム送信 | コンテンツ投稿フォームを悪用してスパムを送ること。 |
| トークンクラッキング | アプリケーション内で何らかの特典を与える有効なトークンコードを特定すること。 |
| 脆弱性スキャン | 識別できる、推測できる、未知のコンテンツ位置、パス、ファイル名、パラメーターを体系的に列挙・検査し、弱点やセキュリティ上の脆弱性がありそうな箇所を見つけること。 |
-
Cloudflare ダッシュボードで、Security Analytics ページを開きます。
Analytics を開く ↗ -
1 つ以上のフィルターを適用します。
-
Request activity で Bot analysis で絞り込みます。
-
Report incorrect data を選び、フォームに入力します。
-
Submit を選びます。
curl 'https://api.cloudflare.com/client/v4/zones/{zone_id}/bot_management/feedback' \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "Content-Type: application/json" \
--data '{
"type": "false_positive",
"description": "Legitimate customers having low score",
"expression": "(cf.bot_management.score le 46 and ip.src.asnum eq 132892 and http.host eq \"api-discovery.theburritobot.com\" and cf.bot_management.ja3_hash eq \"3fed133de60c35724739b913924b6c24\")",
"first_request_seen_at": "2022-08-01T00:00:00Z",
"last_request_seen_at": "2022-08-10T00:00:00Z",
"requests": 100,
"requests_by_score": {
"1": 50,
"10": 50
},
"requests_by_score_src": {
"heuristics": 25,
"machine_learning": 75
},
"requests_by_attribute": {
"topIPs": [
{
"metric": "10.75.34.1",
"requests": 100
}
],
"topUserAgents": [
{
"metric": "curl/7.68.0",
"requests": 100
}
]
}
}'curl 'https://api.cloudflare.com/client/v4/zones/{zone_id}/bot_management/feedback' \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>"[
{
"created_at": "2022-08-19T00:05:24.749712Z",
"type": "false_positive",
"description": "Legitimate customers having low score",
"expression": "(cf.bot_management.score le 46 and ip.src.asnum eq 132892 and http.host eq \"api-discovery.theburritobot.com\" and cf.bot_management.ja3_hash eq \"3fed133de60c35724739b913924b6c24\")",
"first_request_seen_at": "2022-08-01T00:00:00Z",
"last_request_seen_at": "2022-08-10T00:00:00Z",
"requests": 100,
"requests_by_score": {
"1": 50,
"10": 50
},
"requests_by_score_src": {
"heuristics": 25,
"machine_learning": 75
},
"requests_by_attribute": {
"topIPs": [
{
"metric": "10.75.34.1",
"requests": 100
}
],
"topUserAgents": [
{
"metric": "curl/7.68.0",
"requests": 100
}
]
}
}
]| Field | Type | Description | Value Example |
|---|---|---|---|
type |
string | フィードバックレポートの種類です。 | false_positive |
description |
string | 問題の詳細を含む、フィードバックレポートの説明です。 | Legitimate customers having low scores. |
expression |
string | 報告対象のリクエストに一致する wirefilter 式です。 | (cf.bot_management.score le 46 and ip.src.asnum eq 132892 and http.host eq "app.example.com" and cf.bot_management.ja3_hash eq "3fed133de60c35724739b913924b6c24") |
first_request_seen_at |
string | 最初のリクエストが観測された時刻範囲の開始です。RFC 3339 形式です。 | 2022-08-01T00:00:00Z |
last_request_seen_at |
string | 最後のリクエストが観測された時刻範囲の終了です。RFC 3339 形式です。 | 2022-08-10T00:00:00Z |
requests |
integer | 報告したリクエストの総数です。 | 100 |
requests_by_score |
object | スコア別のリクエスト内訳です。 | 下記の例を参照。 |
requests_by_score_src |
object | スコアソース別のリクエスト内訳です。 | 下記の例を参照。 |
requests_by_attribute |
object | 属性別のリクエスト内訳です(任意)。 | 下記の例を参照。 |
requests_by_score
{
"1": 50,
"10": 50
}requests_by_score_src
{
"machine_learning": 75,
"heuristics": 25
}requests_by_attribute
{
"topIPs": [
{
"metric": "10.75.34.1"
"requests": 100
}
],
"topUserAgents": [
{
"metric": "curl/7.68.0",
"requests": 100
}
]
}| Field | Type | Description |
|---|---|---|
cf.bot_management.ja3_hash |
string | ボットの可能性があるリクエストを識別するための SSL/TLS フィンガープリントです。 |
cf.bot_management.score |
integer | リクエストがボットから来た可能性を、1〜99 のスコアで示します。 |
http.host |
string | リクエスト URI 全体で使われたホスト名です。 |
http.request.uri.path |
string | リクエストの URI パスです。 |
http.user_agent |
string | HTTP の User-Agent です。クライアントの OS とウェブブラウザーを識別するための文字列を含むリクエストヘッダーです。 |
ip.src.asnum |
integer | クライアント IP アドレスに紐づく自律システム(AS)番号を表す、16 ビットまたは 32 ビットの整数です。 |
ip.src.country |
string | ISO 3166-1 Alpha 2 形式の 2 文字の国コードです。 |
ip.src |
string | 送信元の IP アドレスです。 |
レポートを送るときは、Bot Analytics ダッシュボードのフィルターを使い、スコアが誤っていたトラフィックだけがレポートに入るようにします。スコアでの絞り込み(必須)に加え、User-Agent、IP、ASN、JA3 で絞り込むと、誤スコアの区間をより正確に示せます。
一部のトラフィックのスコアが誤っているか確信できない場合は、そのトラフィックもレポートに残します。
ドメインへの通常トラフィックと比べて、これらのリクエストをチームが理解しやすくなるコメントがあれば、説明欄に記入してください。
偽陽性を送信したあと、そのトラフィック元が今後の悪用に使われないと確信できる場合は、そのトラフィックを明示的に許可できます。許可するには、偽陽性レポートの特徴に一致する WAF カスタムルールを作り、残りのカスタムルールをスキップする アクションを使います。作成するスキップルールは、想定トラフィックがアクセスするリクエストメソッドと URI を制限するなど、できるだけ狭い範囲にして、悪用の余地を減らすことを推奨します。
- JA3/JA4 フィンガープリント を許可する:専用 IP から来ない安定したソフトウェアクライアントへのアクセスを許可したい場合は、Bot Analytics ダッシュボードでそのクライアントが使う JA3 フィンガープリントを調べ、その JA3 フィンガープリントに基づいてトラフィックを許可する WAF カスタムルールを作ります。JA3 フィンガープリントはクライアントの TLS ライブラリにだけ一致するので、ほかのクライアントとの重複と、OS による違いの両方に注意してください。
悪用される可能性があるモバイルアプリでは、JA3 ルールに頼ることは推奨しません。モバイルアプリからのトラフィックを安全に許可する方法について不明な点があれば、アカウントチームに問い合わせてください。
- IP アドレス を許可する:許可したいトラフィック元だけに属する専用リソースである場合に限り、IP アドレスで許可してください。
許可したいトラフィックがほかのトラフィック元と IP を共有している場合や、IP が頻繁に変わる場合は、IP アドレスでの許可以外の方法を検討してください。
偽陰性レポートを送信したあと、IP アドレス、JA3 フィンガープリント、ASN、User-Agent などの特徴を組み合わせて、誤スコアのトラフィックを明示的にブロックまたはレート制限できます。JA3 フィンガープリントに基づいてブロックまたはレート制限する前に、Bot Analytics で、そのフィンガープリントが正当なトラフィック元に使われていないことを確認してください。