Server-side request forgery
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.[1]
Útok tedy funguje podobně jako příbuzné CSRF, ale namísto přihlášeného uživatele útočník zneužívá samotný webový server.[2]
Typický průběh
[editovat | editovat zdroj]Parametr nějakého HTTP požadavku, který vytvořila webová aplikace (typicky metoda GET, nebo POST),[3] obsahuje URL adresu. Útočník tuto adresu specificky upraví, aby požadavek ze strany serveru směřoval na jinou než zamýšlenou adresu.[1] 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.[4]
Další eskalace útoku
[editovat | editovat zdroj]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).[5][6] 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ší.[1]
Blind SSRF
[editovat | editovat zdroj]K Blind SSRF (SSRF naslepo) může dojít například 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.[3]
Ke zjištění více informací o úspěšnosti útoku musí pak útočník použít 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.[3][7] Nebo je také možné směřovat dotaz na externí doménu provozovanou útočníkem.[8]
Ochrana proti SSRF
[editovat | editovat zdroj]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.[9]
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.[10] 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).[11] 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.[6]
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í.[10]
Reference
[editovat | editovat zdroj]- ↑ a b c M. McDonald a Web Security For Developpers, s. 159.
- ↑ P. Yaworski a Real-World Bug Hunting, s. 150.
- ↑ a b c P. Yaworski a Real-World Bug Hunting, s. 152-153.
- ↑ V. Li a Bug Bounty Bootcamp, s. 213.
- ↑ CWE - CWE-918: Server-Side Request Forgery (SSRF) (4.17). cwe.mitre.org [online]. [cit. 2025-07-19]. Dostupné online. (anglicky)
- ↑ a b Server Side Request Forgery - A10 OWASP Top 10 👁🗨. www.wallarm.com [online]. [cit. 2025-07-19]. Dostupné online. (anglicky)
- ↑ V. Li a Bug Bounty Bootcamp, s. 228.
- ↑ Blind SSRF vulnerabilities [online]. portswigger.net [cit. 2025-07-19]. Dostupné online.
- ↑ M. McDonald a Web Security For Developpers, s. 160.
- ↑ a b Server Side Request Forgery Prevention - OWASP Cheat Sheet Series. cheatsheetseries.owasp.org [online]. [cit. 2025-07-19]. Dostupné online.
- ↑ V. Li a Bug Bounty Bootcamp, s. 215.
Literatura
[editovat | editovat zdroj]- MCDONALD, Malcolm. Web Security For Developpers. 1. vyd. San Francisco: No Starch Press, 2020. 189 s. ISBN 978-1-59327-994-3. S. 159-160. (anglicky)
- YAWORSKI, Peter. Real-World Bug Hunting. San Francisco: No Starch Press, 2019. 350 s. ISBN 978-1-59327-861-8. S. 150-164. (anglicky)
- LI, Vickie. Bug Bounty Bootcamp. San Francisco: No Starch Press, 2021. 390 s. ISBN 978-1-7185-0154-6. S. 213-229. (anglicky)