A10 - Neošetřené přesměrování

A10 - Neošetřené přesměrování (Unvalidated Redirects and Forwards)

Zranitelnosti umožňující napadení přesměrováním na jiné stránky. Takovým přesměrováním může útočník například dosáhnout nainstalování malware anebo odhalit uživatelské heslo anebo jiné citlivé informace.

    Původce hrozby Vektor útoku Bezpečnostní slabina Technické dopady Obchodní dopady
    Aplikační specifikum Zneužitelnost
    průměrná
    Rozšíření
    vzácné
    Zjistitelnost
    snadná
    Dopad
    střední
    Aplikační / obchodní specifikum
    Vezměte v úvahu každého, kdo může podvést vaše uživatele tím, že je přiměje k zaslání požadavku na vaše stránky. Takto je možné zneužít všechny stránky i zdroje HTML, které uživatelé používají. Útočník vytvoří odkaz na neověřené přesměrování a přiměje oběť, aby na něj klikla. Jelikož odkaz směřuje na ověřenou stránku, oběť na něj pravděpodobně klikne. Útočník zacílí přesměrování tak, aby obešlo bezpečnostní kontroly. Aplikace často přesměrovávají uživatele na jiné stránky nebo používají obdobným způsobem interní přesměrování. Někdy je cílová stránka specifikovaná v neověřovaném parametru, a tak umožňuje útočníkům vybrat libovolnou cílovou stránku. Najít neověřené přesměrování na jiné stránky je jednoduché: hledejte přesměrování, která umožňují zadat celé URL. Najít neověřená přesměrování v rámci interních stránek je těžší. Toto přesměrování se může pokusit nainstalovat škodlivý software nebo lstí přimět uživatele k tomu, aby prozradil heslo či jiné citlivé informace. Neověřené přesměrování může umožnit obejití mechanismů řízení přístupu. Zvažte obchodní hodnotu udržení si důvěry uživatelů. Co když se nakazí škodlivým softwarem? Co když se útočníci dostanou k vnitřním funkcím aplikace?
    Jsem zranitelný vůči „neověřeným přesměrováním“?
    Nejlepší způsob, jak zjistit, jestli jsou v aplikaci neověřená přesměrování:
    • 1. Zkontrolujte všechna přesměrování v kódu nebo forwarding (v .NET se nazývají transfer). U každého z nich zkontrolujte, zda je cílové URL obsahem některého parametru. Aplikace je zranitelná, pokud je tomu tak a pokud se toto URL neověřuje v seznamu povolených adres.
    • 2. Použijte také webového robota, abyste zjistili, zda stránky generují přesměrování (odpovědi HTTP 300–307, nejčastěji 302). Zkontrolujte, zda parametry před přesměrováním neobsahují nějakou část cílové URL. Pokud ano, zkuste tuto část podvrhnout a zkontrolujte, zda došlo k přesměrování na nový cíl.
    • 3. Pokud nemáte k dispozici kód, zkontrolujte a otestujte všechny parametry, které vypadají jako část URL, na které je nastavené přesměrovaní.
    Jak mohu předejít „neověřeným přesměrováním“?
    Přesměrovávat bezpečně lze různými způsoby:
    • 1. Žádná přesměrování nepoužívejte.
    • 2. Pokud už je používáte, ať cílová adresa není ovlivněna uživatelskými parametry. Toho se dosáhne snadno.
    • 3. Pokud se těmto parametrům nedá vyhnout, zabezpečte, aby jejich hodnota byla platná a autorizovaná pro daného uživatele. Doporučuje se, aby každý takový parametr byl mapovací hodnotou, nikoli skutečným URL nebo jeho částí, a aby mapovací hodnotu na cílové URL překládal server. Aplikace může využívat ESAPI s metodou sendRedirect(), která zajistí, aby všechna přesměrovaní byla bezpečná.
    Tato zranitelnost bývá často zneužívána rhybáři snažícími se získat důvěru uživatelů, proto je nesmírně důležité jí předejít.
    Příklady možných útoků

    Scénář č. 1: V aplikaci je stránka s názvem „redirect.jsp“, která obsahuje jediný parametr s názvem „url“. Útočník vytvoří škodlivé URL přesměrovávající uživatele na škodlivou phishingovou stránku, která nainstaluje škodlivý software.

    http://www.example.com/redirect.jsp?url=evil.com

    Scénář č. 2: Aplikace používá interní přesměrování, aby přepojila požadavky mezi různými částmi stránek. K tomu některé stránky využívají parametr určující, kam by měl být uživatel přesměrován v případě úspěchu transakce. Pokud aplikace nekontroluje URL, útočník ho upraví a přesměruje na administrativní funkce, k nimž není autorizován.

    http://www.example.com/boring.jsp?fwd=admin.jsp

    Odkazy
    OWASP: Externí:
    Originál o neověřeném přesměrování v angličtině