CloudflareはApplication Profilesを発表した。これは、ポジティブセキュリティの概念をAPIからウェブアプリケーションへ拡張することを目的とした仕組みである。既知の攻撃シグネチャとリクエストを比較するだけでなく、サービスは成功したリクエストの構造を学習し、その後のリクエストがこのパターンにどの程度一致するかを検証する。
この機能は、トラフィックを定期的に分析して、パス、クエリパラメータ、ヘッダー、Cookieに存在する変数と、JSONまたはform-encoded形式のリクエストボディの構造を特定するSchema Profilesに基づいている。また、整数、文字列、ブール値、配列、UUID識別子、列挙値などのデータ型と制約に加え、数値範囲、文字列の長さ、文字クラスも学習する。
実際に何が変わるのか?
特定の操作についてプロファイルが利用可能になると、Cloudflareはライブトラフィックに対して継続的な検証レイヤーを有効にする。たとえば、パスがUUIDを想定している場合や、product_idの値が学習済みの範囲内の整数でなければならない場合、形式が壊れている値、文字列、範囲外の値が届くと、システムはリクエストを不一致として記録できる。これには、リクエストがSQLインジェクション、クロスサイトスクリプティング、リモートコード実行の既知のシグネチャと一致する必要はない。
不一致のシグナルが自動的にアクションを実行するわけではない。結果はリクエストデータに追加され、チームはSecurity Analyticsで確認したうえで、監視またはブロック用のSecurity Rulesを作成できる。CloudflareはProfile Analysisというタブを提供しており、傾向、一致および不一致のリクエスト、違反箇所とその理由を表示できる。また、ルールはアプリケーション全体、または特定のパス、操作、フィールドに適用できる。
学習には人によるレビューが必要
学習は各地域で毎週、直近の成功したトラフィックを使用して実行される。この処理でフィールドを学習するには、過去7日間に2xxコードで応答したリクエストが少なくとも1,000件必要であり、値の境界を学習するには10,000件のリクエストが必要である。ただし、成功したリクエストにはボットやスキャンツールが含まれる可能性があるため、Cloudflareは監視モードから開始し、適用する前にプロファイルを確認することを推奨している。
また、不一致は必ずしも攻撃を意味しない。アプリケーションの新バージョン、新しいクライアント、または正当だが見慣れないリクエストによって発生する可能性がある。プロファイルは毎週更新され、新しいフィールドが追加され、表示されなくなったフィールドが削除される。また、OpenAPI v3ファイルとしてエクスポートし、Schema Validationによってバージョンを固定することもできる。
提供状況と制限
API Securityを利用している顧客はこの機能にアクセスできる。一方、CloudflareはAPI Securityを利用していない招待済みのEnterprise顧客を対象に、クローズドベータプログラムを開始した。ベータプログラムへの参加は、将来的に特定のプランでこの機能が提供されることを意味しない。
- この機能は、パス、クエリパラメータ、ヘッダー、Cookie、JSONおよびform-encoded形式のボディをサポートする。
- 現時点では、multipart、GraphQL、XMLのフォームをサポートしていない。
- 数値型および文字列型、UUID、配列、最大3つの値を含む列挙値を検証できる。
- 繰り返されるパラメータ名の一意性を強制せず、必須パラメータを学習せず、新しいパラメータが含まれているだけでリクエストをブロックすることもない。
なぜこの進展が重要なのか?
Cloudflareによれば、生成AIモデルの普及により、攻撃ペイロードの生成、変更、テストが自動化しやすくなっており、既知の攻撃形式をすべて追跡するのではなく、何が許容されるかを定義する制御の価値が高まっている。ここでの実用的な価値は、管理されたWAFルールを置き換えることではなく、アプリケーションのハンドラーに到達する入力の範囲を縮小するレイヤーを追加することにある。
同社は、コンテキストと優先度の分析を追加する取り組みも進めている。Workers AI上でホストされるモデルを利用し、フィールド名を想定される機能と結び付け、保護措置を提案するものだ。ただし、これらの機能は依然として開発計画または試験段階にあり、プロファイルの精度は学習に使用するトラフィックの品質と量に左右される。そのため、段階的な導入とブロック前のレビューが引き続き不可欠な条件となる。