4.4 Zkouškové okruhy

Tato stránka obsahuje vypracované odpovědi na zkouškové otázky spojené s obsahem čtvrté kapitoly.

10. Reflected, stored, and DOM-based Cross-Site Scripting (XSS): description and mitigation.

Popis:

  • Stored XSS: Útočníkův škodlivý skript (payload) je trvale uložen na serveru (do databáze). Při zobrazení stránky se kód načte všem uživatelům prohlížejícím daný obsah (např. komentáře, fóra).
  • Reflected XSS: Payload je obsažen přímo v HTTP požadavku (obvykle v parametru URL). Server jej neodkládá do databáze, ale rovnou jej "odrazí" zpět v rámci HTML odpovědi. Vyžaduje zaslání speciálního odkazu oběti k prokliku.
  • DOM-based XSS: Útok je realizován výhradně na straně klienta. Zranitelný je klientský JavaScript (např. při zpracování location.search), který provede nebezpečné vložení uživatelem kontrolovaných dat přímo do objektového modelu dokumentu (DOM).

Obrana (Mitigation):

Primární obranou je Context-aware escaping, které zajišťuje escapování nebezpečných speciálních znaků vždy přesně dle daného kontextu, ve kterém se data uživatele vykreslují. Blacklisting je zásadně nevhodný. Pokud se má text jakkoli formátovat, využívá se whitelistu HTML tagů a odpovídajících atributů.

11. SQL Injection: description and mitigation.

Popis:

SQL Injection (SQLi) vzniká vložením neověřeného uživatelského vstupu přímo do databázového dotazu. To útočníkovi otevírá cestu k modifikaci struktury či logiky dotazu pomocí speciálních znaků (např. ' OR 1=1 --). Útočník tak může přistupovat k datům jiných uživatelů, modifikovat strukturu tabulek (DROP TABLE), nebo pomalu číst data metodami Blind SQL Injection (Boolean, Error, Time-based), kdy server nevrací data přímo, ale útočník si je dovozuje chováním serveru.

Obrana (Mitigation):

Nejrobustnější ochranou je využití mechanismu Prepared statements (parametrizovaných dotazů), který předkládá databázi kód a uživatelská data plně odděleně. Na místech, kde tento přístup není možný (např. název sloupce v klauzuli ORDER BY), je třeba uplatňovat přísný white list na straně aplikačního kódu.

12. Command Injection: description and mitigation.

Popis:

Command Injection umožňuje obcházet vstupy aplikace s cílem vložit a spustit vlastní příkazy na úrovni operačního systému serveru. Např. volání funkce pingu pomocí systémového shellu se vstupem obaleným o znaky řetězení (jako |, ; nebo &&) způsobí zastavení aktuálního příkazu a vykonání podsunutého (např. vypsání kritických souborů jako /etc/passwd). Příkaz je prováděn s uživatelskými právy ohrožené aplikace.

Obrana (Mitigation):

Absolutním základem prevence je nepoužívat spouštění shell příkazů (např. systémového pingu), jestliže v aplikačním jazyce existuje nativní rozhraní či knihovna schopná téže operace. Pokud systémový shell nelze obejít, je vyžadována striktní data-specific validace formátu vstupu přes pevné vzory (whitelisting regexem, pouze číslice apod.) a správné escapování volaných argumentů.