A7 - Chyby v řízení úrovní přístupů

A7 - Chyby v řízení úrovní přístupů (Missing Function Level Access Control)

Špatná kontrola ACL (Access Control List) a URL (Failure to Restrict URL Access) – zranitelnosti umožňující napadení nedostatečně zabezpečeným řízením přístupu ke zdrojům informací (dokument, služba) přes URL.

Zranitelnosti umožňující napadení neoprávněným přístupem k funkcionalitě.

    Původce hrozby Vektor útoku Bezpečnostní slabina Technické dopady Obchodní dopady
    Aplikační specifikum Zneužitelnost
    snadná
    Rozšíření
    běžné
    Zjistitelnost
    průměrná
    Dopad
    střední
    Aplikační / obchodní specifikum
    Všichni, kdo mají přístup do sítě, mohou zaslat vaší aplikaci požadavek. Nemůže se anonymní uživatel dostat k neveřejné funkcionalitě nebo ověřený uživatel k funkcím, k nimž nemá oprávnění? Útočník, který je ověřeným uživatelem systému, může upravit URL nebo nějaký parametr, a dostat se tak k privilegovaným funkcím. Je mu přístup umožněn? Anonymní uživatelé se mohou dostat k neveřejným funkcím, které proti tomu nejsou zabezpečeny. Ne vždy chráni aplikace své funkce správně. Někdy je úroveň ochrany funkcí řízena nastavením, ovšem systém je nastaven nesprávně. Jindy vývojáři zapomenou udělat dostatečnou kontrolu kódu. Detekování takovéhoto nedostatku přitom není těžké – nejnáročnější je určit, které stránky (URL) a funkce jsou napadnutelné. Tento druh zranitelnosti umožňuje útočníkovi získat neoprávněný přístup k funkcionalitě. Ústředním cílem takovéhoto útoku jsou administrá- torské funkce. Zvažte hodnotu jednotlivých funkcí a dat jimi zpracová- vaných. Také zvažte vliv na svou pověst, pokud se tato zranitelnost dostane na veřejnost.
    Jsem zranitelný vůči „chybám v řízení úrovní přístupu“?
    Nejlepším způsobem, jak zjistit, zda aplikace správně omezuje přístup k jednotlivým funkcím, je ověřit každou funkci aplikace:
    • 1. Nezobrazuje uživatelské rozhraní přístup k neoprávněným funkcím?
    • 2. Nechybí na straně serveru autentizační nebo autorizační kontroly?
    • 3. Nespoléhají kontroly na straně serveru pouze na informace poskytnuté útočníkem?
    Prohlédněte si aplikaci s privilegovanými právy pomocí proxy. Následně opět navštivte stránku s použitím omezených práv. Pokud jsou si odpovědi serveru podobné, server je pravděpodobně zranitelný. Tento druh analýzy některé testovací proxy přímo podporují. Na implementaci řízení přístupu se můžete podívat také v kódu. Zkuste v kódu sledovat jeden privilegovaný požadavek a zkontrolovat autorizační mechanizmus. Následně projděte celý kód a zjistěte, kde nebyl tento mechanismus dodržen. Tato chyba se hledá automatickými nástroji jen stěží.
    Jak mohu předejít „chybám v řízení úrovní přístupu“?
    Aplikace by měla mít konzistentní a jednoduše analyzovatelný autorizační modul, který budou používat všechny funkce. Takovou ochranu často poskytují externí doplňky.
    • 1. Zamyslete se nad procesem správy oprávnění a zajistěte, aby byla jednoduše aktualizovatelná a prověřitelná. Nevpisujte oprávnění přímo do kódu.
    • 2. Autorizační mechanismus by měl implicitně odmítnout všechny přístupy a každou funkci by měl povolit jenom vyjmenovaným uživatelským rolím.
    • 3. Pokud je funkce součástí pracovního postupu, ujistěte se, že podmínky umožňující přístup jsou nastaveny správně.
    Poznámka: Většina webových aplikací sice nezobrazuje odkazy ani tlačítka pro přístup k privilegovaným funkcím, ale toto „řízení přístupu na úrovni vzhledu“ ochranu ve skutečnosti nezajistí. Kontroly je potřeba implementovat rovněž v řídících prvcích a v logice činnosti firmy.
    Příklady možných útoků

    Příklad č. 1: Útočník v prohlížeči zadá cílové URL. Toto URL vyžaduje autentizaci. Pro přístup ke stránce „admin_getappInfo“ jsou požadována i administrátorská práva.

    http://example.com/app/getappInfo

    http://example.com/app/admin_getappInfo

    Pokud může přistoupit k jedné z těchto stránek neautentizovaný uživatel, jedná se o zranitelnost. Pokud může přistoupit ke stránce “admin_getappInfo“ autentizovaný uživatel, který však není administrátorem, jedná se také o zranitelnost, a ta může dovést útočníka na ještě nedostatečněji chráněné administrátorské stránky.

    Příklad č. 2: Stránka obsahuje parametr „akce“, který určuje volanou funkčnost. Různé akce vyžadují různé uživatelské role, a pokud aplikace použití rolí nevynucuje, je to chyba.

    Odkazy
    OWASP:

    Další požadavky na řízení přístupu viz v ASVS requirements area for Access Control (V4).

    Externí:
    Originál o Missing Function Level Access Control v angličtině