5.8 Zkouškové okruhy

Tato podkapitola obsahuje odpovědi na otázky z dokumentu ExamTopic.md, které se vztahují k páté kapitole, aby byl student co nejlépe připraven na ústní zkoušku.

Otázka 13: Security-relevant headers (and what they protect against).
Odpověď: Bezpečnostní hlavičky zasílá server webovému prohlížeči, aby nastavil bezpečnější chování pro uživatele a zamezil konkrétním hrozbám na straně klienta. Mezi ty stěžejní patří:
  • Strict-Transport-Security (HSTS): Přikazuje prohlížeči komunikovat výlučně na bezpečné lince (HTTPS), brání tím tzv. downgrade a man-in-the-middle (MITM) útokům na protokol.
  • X-Frame-Options: Určuje, jestli a odkud se stránka smí vkládat do <iframe> či jiných vnořených tagů, aby chránil aplikaci primárně proti útokům jako Clickjacking. Lze nahradit novější a lepší CSP (přes frame-ancestors).
  • X-Content-Type-Options (nosniff): Říká, že se má plně dodržet a neměnit MIME typ sdělený aplikací (Content-Type) a prohlížeč se nesmí sám pokoušet typ změnit hádáním (MIME sniffing). Tím brání nahrání a neúmyslnému spuštění nebezpečného XSS např. ze zdánlivě nevinných textových či obrazových souborů.
  • Content-Security-Policy (CSP): Královská hlavička chránící proti neautorizovanému spouštění škodlivého kódu (XSS), zakazuje načítání komponent z cizích nekontrolovaných zdrojů. Explicitně v ní povolíte, jaké domény smí vracet skripty, CSS styly, obrázky nebo iframy.
  • Permissions-Policy: Definuje, zda a komu (jakým doménám) je povoleno využít konkrétní funkcionality a API uvnitř prohlížeče (mikrofon, kamera, sdílení obrazovky atd.).
Otázka 14: File inclusion / path traversal: description and mitigation.
Odpověď:
  • Popis: Tyto problémy nastávají ve chvíli, kdy aplikace pracuje se zadaným jménem nebo celou cestou k souboru v nějakém parametru bez potřebné kontroly či omezení, a útočník tuto skutečnost využije ke svému prospěchu. File Inclusion obecně znamená neoprávněné vložení souboru na vykonání nebo zobrazení (buď jako Local (LFI) pro systémové soubory či databáze, nebo Remote (RFI) z útočníkova serveru). Path Traversal označuje podtřídu zaměřenou na procházení se zpět (za použití sekvence ../) mimo hranice očekávaného adresáře (web rootu). Útočník tak může získat jak citlivá systémová a aplikační hesla, tak může dospět k RCE (Remote Code Execution).
  • Mitigace (Ochrana): Přímým vstupem (souborovými cestami od uživatele) je nutné se při návrhu bezpečné aplikace vyhnout ("Design around it"). Místo toho nabídněte bezpečné nepřímé reference. Jestliže si uživatel stahuje profilovou fotku, neposílá se URL ve tvaru ?file=fotka.png, ale pouze ?id=12 a webový backend sám ze své bezpečné databáze zjistí správnou a povolenou cestu, aniž by nechal uživatele s cestou jakkoli manipulovat.
Otázka 15: Server-Side Request Forgery (SSRF): description and mitigation.
Odpověď:
  • Popis: SSRF znamená, že aplikace je podvedena a jménem zranitelného backend serveru vykoná požadavek někam jinam, než bylo ve skrytém původním záměru očekáváno (tj. požadavek odesílá a razítkuje vlastním jménem server, ne klient / uživatel). V důsledku tohoto přístupu může SSRF napadnout firewallem hlídané neviditelné zóny interní sítě, ve které se aplikační server nachází. Umožní proskenování vnitřní infrastruktury, čtení z 127.0.0.1, vyžádání cloud tokenů z metadat URL adres a ve spoustě případů i přímou konzumaci lokálních souborů při využití odlišných schémat, např. zadáním lokálního schématu file:// namísto HTTP.
  • Mitigace (Ochrana): Hlavním řešením je znova silný design (předejít takovým procesům úplně), pokud aplikace stahuje ze vzdálených linků, musí tyto linky tvrdě hlídat a filtrovat přes seznam povolených domén (white-listing). Bezpodmínečně pak na firewallech omezit, nebo v logice zakázat dotazování interních struktur v síti (odmítnutí dotazů na loopback blok 127.0.0.1, link-local adresy a vnitřní sítě 10.x.x.x apod.). Zvažuje se také striktní izolace stahovacího agenta od hlavních sítí backendu.
Otázka 16: XML eXternal Entity (XXE).
Odpověď: XXE zranitelnost těží ze špatné nebo základní (a u spousty frameworků zastaralé) konfigurace parsingu a validování příchozích XML dokumentů na straně serveru. Konkrétně za ni může opomenutí zamezit vyhodnocování externích entit. Útočník proto vloží do definice takového příchozího XML (v hlavičce do DOCTYPE) deklaraci externí entity. Tu napojí přímo na volání systémové cesty přes direktivu SYSTEM "file:///etc/passwd". Následně entitu vypíše do libovolné hodnoty XML zprávy, kterou parser ochotně vyhodnotí, rozbalí a přiřadí dané proměnné obsah z lokálního souboru operačního systému, do kterého entita směřovala. Kromě vytažení informací z lokálních souborů může útočník provádět přes entitu i vnitřní port skenování sítě, vyžádat si DoS útoky exponenciálním nabalením odkazujících se XML entit uvnitř sebe (tzv. "Billion laughs attack") či způsobit další pády systémů. Obrana spočívá v přímém zákazu zpracovávání a vyhodnocování externích entit (external entities resolution) v knihovně parseru ještě před zpracováním nedůvěryhodných dat.