Server-side request forgery (zkráceně SSRF) je zranitelnost ve webové bezpečnosti. Jedná se o exploit nebo techniku, při které útočník donutí server provozující webovou aplikaci, aby provedl požadavek na jinou URL adresu, než bylo zamýšleno. Tento požadavek může směřovat buď do vnitřní sítě (např. k databázovým serverům, interním API atp.) nebo na externí služby.

Útok tedy funguje podobně jako při využití CSRF, ale namísto přihlášeného uživatele útočník zneužívá samotný webový server.

Typický průběh útoku náhled|Schéma typického průběhu Parametr nějakého HTTP požadavku, který vytvořila webová aplikace (typicky metoda GET, nebo POST), obsahuje URL adresu. Útočník tuto adresu specificky upraví, aby požadavek ze strany serveru směřoval na jinou než zamýšlenou adresu. To může být adresa jiného interního serveru, API, nebo dokonce i nějaké externí služby. Útočník zde využívá skutečnost, že server má ve vnitřní síti často vyšší oprávnění než běžný uživatel, tedy může použít daný server jako prostředníka a potenciálně tak zvýšit svá oprávnění. Se zvýšenými oprávněními může provést nekalou akci, nebo eskalovat v nebezpečnější útok.

Další eskalace útoku SSRF může útočníkovi napomoci k Remote code execution, nebo k úniku interních dat. Také může být cestou ke skenování portů, nebo rovnou celé vnitřní sítě – Cross-Site Port Attack (XSPA). Potenciálně také zjednodušuje útoky typu DoS, protože vnitřní síť je často dimenzována na menší objem požadavků než ta vnější.

Blind SSRF K Blind SSRF (SSRF naslepo) dochází v situaci, kdy je útočník schopen poslat požadavek do vnitřní sítě, ale nemá přímý přístup k odpovědím, které ovládaný server na útočníkem vynucené požadavky dostává. Může tak pouze odhadovat zda byl jeho útok úspěšný, na základě chování dané aplikace nebo serveru.

Ke zjištění více informací o úspěšnosti útoku musí pak útočník vzít v potaz další vlastnosti, například stavové kódy nebo časové prodlevy, kdy v případě uzavřených portů je reakce rychlejší než v případě nedosažitelných atp. Nebo je také možné směřovat dotaz na externí doménu provozovanou útočníkem.

Ochrana proti SSRF Ochrana proti SSRF musí být zavedena na více vrstvách podle principu Defense-in-Depth. Důležité je na ni myslet už v samotném návrhu. Tedy ideálně stránku navrhnout tak, aby adresy, na které je nutné přistupovat, byly zakódovány ve stránce přímo a nepocházely od klienta.

Na síťové vrstvě může být ochranou proti SSRF například segmentace sítě takovým způsobem, abychom snížili jeho pravděpodobnost. Tedy aby externí servery měly minimální přístup k těm interním. Také je možné instalovat WAF (webový firewall), který by omezil možnosti posílat interní požadavky a tak zabránil například již zmíněnému XSPA. Nebo ve firewallu definovat allowlisty, tedy vybrat jisté vstupy, nebo adresy, které explicitně povolíme (whitelist) nebo zakážeme (blacklist). Příkladem je zablokování některých protokolů a schémat, jako je třeba file://, nebo alespoň omezit jejich užívání na nezbytné minimum.

Na aplikační vrstvě je poté nutné správně ošetřovat vstupy a, pokud je to možné, také zakázat přesměrování.

Reference

Literatura

Kategorie:Webové exploity Kategorie:Webové servery Kategorie:Anglická slova a fráze