← Dokumentace WAF / detections
Detekce škodlivých nahrávaných souborů
Detekce škodlivých nahrávek je detekce provozu které prohledává soubory a další obsah nahraný do vaší aplikace na výskyt malwaru.
Když tuto detekci zapnete, WAF kontroluje příchozí nahrávané soubory a prověřuje je na škodlivé signatury. Výsledky kontroly jsou dostupné jako pole které můžete použít v vlastní pravidla a pravidla rate limitingu k reakci na požadavky obsahující škodlivý obsah.
Jak to funguje
Jakmile tuto detekci zapnete, Cloudflare kontroluje veškerý příchozí provoz a identifikuje objekty obsahu automaticky.
Když Cloudflare v požadavku zjistí jeden nebo více objektů obsahu, odešle je k analýze antivirovému (AV) skeneru. Jde o stejný AV skener, jaký se používá v Cloudflare Zero Trust.
Na základě výsledků skenování detekce naplní pole na které se můžete odkazovat ve výrazech pravidel. Můžete si například vytvořit pravidlo, které blokuje požadavky se škodlivými soubory, nebo konkrétnější pravidlo, které navíc porovnává velikost souboru, typ souboru nebo cestu URI.
Co je objekt obsahu?
Objekt obsahu je soubor nebo binární payload v požadavku, který Cloudflare identifikuje jako obsah vhodný k prohledání. Detekce škodlivých nahrávek používá heuristiky k automatickému nalezení objektů obsahu, aniž by vycházela z požadavku Content-Type hlavičku (protože tuto hlavičku lze zmanipulovat).
Z kontroly jsou vyloučeny následující typy obsahu: text/html, text/x-shellscript, application/json, text/csv, a text/xml. Veškerý ostatní detekovaný obsah se považuje za objekt obsahu. Mezi běžné příklady patří:
- Spustitelné soubory (například
.exe,.bat,.dll, a.wasm) - Dokumenty (například
.doc,.docx,.pdf,.ppt, a.xls) - Komprimované soubory (například
.gz,.zip, a.rar) - Soubory obrázků (například
.jpg,.png,.gif,.webp, a.tif) - Video a audio soubory
Pokud Cloudflare zjistí škodlivý objekt, ale nedokáže určit jeho přesný typ obsahu, nahlásí objekt jako application/octet-stream.
Prohledaný obsah
Skenování obsahu může kontrolovat následující objekty obsahu na škodlivý obsah:
- Nahrané soubory v požadavku
- Části těla požadavku u vícedílných požadavků kódované jako
multipart/form-datanebomultipart/mixed - Konkrétní vlastnosti JSON v těle požadavku (obsahující například soubory zakódované v Base64) podle vlastní výrazy pro skenování které uvedete
Zkontrolovány budou všechny objekty obsahu v příchozím požadavku, konkrétně u požadavků s více nahranými soubory (například odeslaný formulář HTML s několika vstupy pro soubory).
Skener obsahu důkladně zkontroluje objekty obsahu o velikosti do 50 MB. U větších objektů obsahu skener analyzuje prvních 50 MB a výsledky kontroly poskytne na základě této části objektu.
Vlastní skenovací výrazy
Někdy budete chtít určit, kde se mají hledat objekty obsahu, například pokud je obsah řetězcem zakódovaným v Base64 uvnitř payloadu JSON. Například:
{ "file": "<BASE64_ENCODED_STRING>" }V těchto situacích nakonfigurujte vlastní výraz skenování, který skeneru obsahu řekne, kde má objekty obsahu hledat. Další informace najdete v Konfigurace vlastního výrazu pro kontrolu.
Další informace a další příklady vyhledávání polí ve vnořených JSON payloadech najdete v lookup_json_string() dokumentaci k funkci.
Pole skenování obsahu
Když je povolena kontrola obsahu, můžete v pravidlech WAF použít následující pole:
| Pole | Popis |
|---|---|
Obsahuje objekt obsahu cf.waf.content_scan.has_obj Boolean |
Udává, zda požadavek obsahuje alespoň jeden objekt obsahu. |
Obsahuje škodlivý objekt obsahu cf.waf.content_scan.has_malicious_obj Boolean |
Udává, zda požadavek obsahuje alespoň jeden škodlivý objekt obsahu. |
Počet škodlivých objektů obsahu cf.waf.content_scan.num_malicious_obj Integer |
Počet škodlivých objektů obsahu zjištěných v požadavku (nula nebo více). |
Skenování obsahu selhalo cf.waf.content_scan.has_failed Boolean |
Udává, zda skener souborů nedokázal zkontrolovat žádný z objektů obsahu zjištěných v požadavku. |
Počet objektů obsahu cf.waf.content_scan.num_obj Integer |
Počet objektů obsahu zjištěných v požadavku (nula nebo více). |
Velikost objektu obsahu cf.waf.content_scan.obj_sizes Array<Integer> |
Pole velikostí souborů v bajtech v pořadí, ve kterém byly objekty obsahu v požadavku zjištěny. |
Typ objektu obsahu cf.waf.content_scan.obj_types Array<String> |
Pole typů souborů v pořadí, ve kterém byly objekty obsahu v požadavku zjištěny. |
Výsledek objektu obsahu cf.waf.content_scan.obj_results Array<String> |
Pole výsledků skenování v pořadí, ve kterém byly objekty obsahu v požadavku zjištěny. Možné hodnoty: clean, suspicious, infected, a not scanned. |
Příklady výrazů pravidel využívajících tato pole najdete v Příklady pravidel.