Přeskočit na hlavní obsah

Server-Side Request Forgery (SSRF)

  • K chybám dochází vždy, když webová aplikace načítá vzdálený prostředek bez ověření uživatelem zadané URL adresy.
  • Útočník může aplikaci přimět k odeslání vytvořeného požadavku na neočekávaný cíl, a to i v případě, že je stránka chráněna firewallem, VPN nebo jiným typem ACL.
  • Vzhledem k tomu, že moderní webové aplikace poskytují koncovým uživatelům pohodlné funkce, stává se načítání adresy URL běžným scénářem.
    • V důsledku toho se zvyšuje výskyt SSRF.
  • Závažnost SSRF je stále vyšší v důsledku cloudových služeb a složitosti architektur.

Jak zranitelnosti předcházet

🔴 Nesnažte se SSRF zmírnit pomocí blacklistu nebo regulárních výrazů, útočníci mají k dispozici seznamy, nástroje a dovednosti, které jim to umožňují obejít.

Síťová vrstva

🔴 Segmentujte funkci vzdáleného přístupu k prostředkům v oddělených sítích s cílem snížit dopad SSRF.

🔴 Vynucujte firewall zásady "deny by default" nebo pravidla řízení přístupu k síti, abyste blokovali veškerý provoz (kromě nezbytného provozu v intranetu).

🔴 Stanovte ownership a lifecycle pro firewall na základě aplikací.

🔴 Logujte všechny přijaté a blokované síťové toky (viz logování a monitorování chyb).

Aplikační vrstva

🔴 Sanitizujte a ověřujte všechna zadaná vstupní data.

🔴 Vynuťte URL, port a cílovou destinaci pomocí whitelistu.

🔴 Neposílejte klientům nezpracované odpovědi.

🔴 Zakažte HTTP přesměrování.

🔴 Dbejte na konzistenci URL adres, abyste se vyhnuli útokům jako je DNS rebinding a "time of check, time of use" (TOCTOU) race conditions.

Další opatření

🔴 Nenasazujte jiné služby související se zabezpečením frontendu (např. OpenID).

🔴 Řiďte lokální provoz na těchto systémech (localhost).

🔴 Použijte síťové šifrování (VPN) u frontendů s vyhrazenými a spravovatelnými user groups na nezávislých systémech, čímž zohledníte vysoké požadavky na ochranu.

Příklad zneužití zranitelnosti

  1. Odhalení citlivých dat - útočníci mohou získat přístup k lokálním souborům nebo interním službám a získat citlivé informace, např. file://etc/passwd a http://localhost:28017/.
  2. Přístup k úložišti metadat cloudových služeb - většina poskytovatelů služeb má úložiště metadat, např. http://169.254.169.254/. Útočník může metadata přečíst a získat citlivé informace.
  3. Kompromitace interních služeb - útočník může zneužít interní služby k dalším útokům - např. vzdálené spuštění kódu (RCE) nebo DoS.

Kam dál

Cheat sheety

Další