← Dokumentace WAF / detections
Detekce škodlivých uploadů
Detekce škodlivých nahraných souborů je detekce provozu která kontroluje soubory a další obsah nahrávaný do vaší aplikace na přítomnost malwaru.
Když tuto detekci zapnete, WAF kontroluje příchozí nahrávané soubory a hledá v nich škodlivé signatury. Výsledky skenování jsou dostupné jako pole která můžete použít v vlastní pravidla a pravidla rate limitingu k zásahu proti požadavkům obsahujícím škodlivý obsah.
Jak to funguje
Jakmile tuto detekci zapnete, Cloudflare kontroluje veškerý příchozí provoz a identifikuje obsahové objekty automaticky.
Když Cloudflare detekuje v požadavku jeden nebo více obsahových objektů, 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á můžete odkazovat ve výrazech pravidel. Můžete například vytvořit pravidlo blokující 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 content object?
Content object je soubor nebo binární payload v požadavku, který Cloudflare identifikuje jako skenovatelný obsah. Detekce škodlivých uploadů používá heuristiky k automatickému vyhledání content objectů, aniž by se spoléhala na Content-Type hlavičku (protože s touto hlavičkou lze manipulovat).
Následující typy obsahu jsou ze skenování vyloučeny: text/html, text/x-shellscript, application/json, text/csv a text/xml. Veškerý ostatní detekovaný obsah je považován za obsahový objekt. Běžné příklady zahrnují:
- Spustitelné soubory (například
.exe,.bat,.dlla.wasm) - Dokumenty (například
.doc,.docx,.pdf,.ppta.xls) - Komprimované soubory (například
.gz,.zipa.rar) - Obrazové soubory (například
.jpg,.png,.gif,.webpa.tif) - Video a audio soubory
Pokud Cloudflare detekuje škodlivý objekt, ale nedokáže určit jeho přesný content type, nahlásí objekt jako application/octet-stream.
Skenovaný obsah
Skenování obsahu může na škodlivý obsah kontrolovat následující obsahové objekty:
- Nahrané soubory v požadavku
- Části těla požadavku u multipart požadavků kódované jako
multipart/form-datanebomultipart/mixed - Konkrétní JSON vlastnosti v těle požadavku (obsahující například soubory kódované v Base64) podle vlastní výrazy skenování které zadáte
Zkontrolují se všechny obsahové objekty v příchozím požadavku, zejména u požadavků s více nahranými soubory (například odeslaný HTML formulář s několika souborovými poli).
Skener obsahu plně zkontroluje obsahové objekty do velikosti 50 MB. U větších obsahových objektů skener analyzuje prvních 50 MB a poskytne výsledky skenování na základě této části objektu.
Vlastní výrazy pro skenování
Někdy můžete chtít určit, kde content objecty hledat, například když je obsah řetězec kódovaný v Base64 uvnitř JSON payloadu. Například:
{ "file": "<BASE64_ENCODED_STRING>" }V těchto situacích nakonfigurujte vlastní výraz skenování, který skeneru obsahu řekne, kde najít content objecty. Více informací najdete v Konfigurace vlastního výrazu pro skenování.
Více informací a další příklady vyhledávání polí ve vnořených JSON payloadech najdete v lookup_json_string() dokumentaci funkce.
Pole skenování obsahu
Když je skenování obsahu zapnuté, můžete v pravidlech WAF používat následující pole:
| Pole | Popis |
|---|---|
Má content object cf.waf.content_scan.has_obj Boolean |
Označuje, zda požadavek obsahuje alespoň jeden obsahový objekt. |
Has malicious content object cf.waf.content_scan.has_malicious_obj Boolean |
Označuje, zda požadavek obsahuje alespoň jeden škodlivý obsahový objekt. |
Number of malicious content objects cf.waf.content_scan.num_malicious_obj Integer |
Počet škodlivých obsahových objektů detekovaný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 naskenovat některý z content objectů detekovaných v požadavku. |
Počet obsahových objektů cf.waf.content_scan.num_obj Integer |
Počet content objectů detekovaných v požadavku (nula nebo více). |
Content object size cf.waf.content_scan.obj_sizes Array<Integer> |
Pole velikostí souborů v bajtech, v pořadí, v jakém byly obsahové objekty v požadavku detekovány. |
Typ obsahového objektu cf.waf.content_scan.obj_types Array<String> |
Pole typů souborů v pořadí, v jakém byly obsahové objekty v požadavku detekovány. |
Content object result cf.waf.content_scan.obj_results Array<String> |
Pole výsledků skenování v pořadí, v jakém byly obsahové objekty v požadavku detekovány. Možné hodnoty: clean, suspicious, infected a not scanned. |
Příklady výrazů pravidel používajících tato pole najdete v Příklady pravidel.