アップロードされたコンテンツのスキャン
WAFコンテンツスキャンは、アプリケーションにアップロードされるコンテンツをスキャンするWAF トラフィック検出です。
有効にすると、コンテンツスキャンはアップロードされたファイルなどのコンテンツオブジェクトを検出し、マルウェアのような悪意のあるシグネチャをスキャンしようとします。スキャン結果と追加のメタデータは、WAF カスタムルールで利用可能なフィールドとして公開され、詳細な緩和ルールを実装することができます。
有効にすると、コンテンツスキャンはすべての受信トラフィックに対して実行され、自動的にコンテンツオブジェクトを特定します。
1つ以上の検出されたコンテンツオブジェクトを含むリクエストごとに、コンテンツスキャナーはウイルス対策(AV)スキャナーに接続して、コンテンツオブジェクトの徹底的な分析を行います。スキャンの結果を使用して、WAFはルール式で使用できるいくつかのフィールドを埋めます。たとえば、悪意のあるファイルを含むリクエストをブロックする基本的なルールを作成したり、特定のファイルサイズ、ファイルタイプ、またはURIパスに一致する複雑なルールを作成したりできます。
Cloudflareは、WAFコンテンツスキャンのためにCloudflare Zero Trustで使用されるのと同じウイルス対策(AV)スキャナーを使用しています。
コンテンツオブジェクトとは、ヒューリスティックによって検出されたリクエストペイロードで、次のいずれかのタイプに一致しないものを指します:text/html、text/x-shellscript、application/json、text/csv、およびtext/xml。その他のすべてのコンテンツタイプはコンテンツオブジェクトと見なされ、以下のようなものが含まれます:
- 実行可能ファイル(例:
.exe、.bat、.dll、および.wasm) - ドキュメント(例:
.doc、.docx、.pdf、.ppt、および.xls) - 圧縮ファイル(例:
.gz、.zip、および.rar) - 画像ファイル(例:
.jpg、.png、.gif、.webp、および.tif) - 動画および音声ファイル
コンテンツスキャンは、リクエストのContent-Typeヘッダーを考慮しません。このヘッダーは操作可能であるためです。システムが悪意のあるオブジェクトを検出したが、その正確なコンテンツタイプを特定できない場合、悪意のあるコンテンツオブジェクトはapplication/octet-streamコンテンツタイプとして報告されます。
コンテンツスキャンは、以下のコンテンツオブジェクトを悪意のあるコンテンツについてチェックできます:
- リクエスト内のアップロードされたファイル
multipart/form-dataまたはmultipart/mixedとしてエンコードされたマルチパートリクエストのリクエストボディの一部- 提供されたカスタムスキャン式に従って、リクエストボディ内の特定のJSONプロパティ(たとえば、Base64でエンコードされたファイルを含む)
受信リクエスト内のすべてのコンテンツオブジェクトがチェックされます。たとえば、複数のアップロードファイルを含むリクエスト(たとえば、複数のファイル入力を持つHTMLフォームの送信)に対してです。
コンテンツスキャナーは、最大15MBのサイズのコンテンツオブジェクトを完全にチェックします。より大きなコンテンツオブジェクトについては、スキャナーは最初の15MBを分析し、その部分に基づいてスキャン結果を提供します。
時には、コンテンツオブジェクトを見つける場所を指定したい場合があります。たとえば、コンテンツがJSONペイロード内のBase64エンコードされた文字列である場合です。例:
{ "file": "<BASE64_ENCODED_STRING>" }このような場合、カスタムスキャン式を設定して、コンテンツスキャナーにコンテンツオブジェクトを見つける場所を指示します。詳細については、カスタムスキャン式の設定を参照してください。
コンテンツスキャンが有効になっている場合、WAFルールで以下のフィールドを使用できます:
| ダッシュボードのフィールド名 | 式内のフィールド名 |
|---|---|
| コンテンツオブジェクトがある | cf.waf.content_scan.has_obj |
| 悪意のあるコンテンツオブジェクトがある | cf.waf.content_scan.has_malicious_obj |
| 悪意のあるコンテンツオブジェクトの数 | cf.waf.content_scan.num_malicious_obj |
| コンテンツスキャンが失敗した | cf.waf.content_scan.has_failed |
| コンテンツオブジェクトの数 | cf.waf.content_scan.num_obj |
| コンテンツオブジェクトのサイズ(バイト単位) | cf.waf.content_scan.obj_sizes |
| コンテンツオブジェクトのタイプ | cf.waf.content_scan.obj_types |
| コンテンツオブジェクトの結果 値: clean、suspicious、infected、およびnot scanned | cf.waf.content_scan.obj_results |
これらのフィールドを使用したルール式の例については、例ルールを参照してください。