A4 - Nezabezpečený přímý odkaz na objekt

A4 - Nezabezpečený přímý odkaz na objekt (Insecure Direct Object References)

Chyby umožňující neoprávněné přístupy k datům nezabezpečeným přístupem k vnitřnímu objektu aplikace (souboru, adresáři, databázovému klíči).

    Původce hrozby Vektor útoku Bezpečnostní slabina Technické dopady Obchodní dopady
    Aplikační specifikum Zneužitelnost
    snadná
    Rozšíření
    běžné
    Zjistitelnost
    snadná
    Dopad
    střední
    Aplikační / obchodní specifikum
    Vezměte v úvahu typy uživatelů v systému. Nemají mít někteří uživatelé k určitým druhům dat pouze částečný přístup? Útočník, který je oprávněným uživatelem systému, jednoduše změní hodnotu parametru, který přímo odkazuje na objekt systému, na jiný objekt, k němuž nemá mít oprávnění. Je mu přístup udělen? Aplikace často používají při generování (vytváření) webových stránek skutečný název nebo klíč nějakého objektu. Ne vždy ověřují, že je uživatel oprávněn přistupovat k cílovému objektu. To má za následek nezabezpečený přímý přístup k objektu. Takovéto chyby mohou snadno odhalit testeři, když budou manipulovat s hodnotami parametrů. Zda jsou autorizace řádně kontrolovány, rychle ukáže analýza kódu. Takové chyby mohou ohrozit veškerá data, na která odkazuje parametr. Pokud je odkaz na objekt předvídatelný, útočník snadno získá přístup ke všem datům tohoto typu.

    Zvažte obchodní hodnotu odhalených dat.

    Také zvažte obchodní dopad zveřejnění zranitelnosti.

    Jsem zranitelný vůči „nezabezpečeným přímým odkazům na objekty“?

    Nejlepší způsob, jak zjistit, zda je aplikace je zranitelná vůči nezabezpečeným přímým odkazům na objekty, je ověřit, zda všechny odkazy na objekt mají odpovídající ochranu. K dosažení tohoto cíle vezměte v úvahu:

    • 1. V případě přímých odkazů ke zdrojům s omezeným přístupem: ověří aplikace, že uživatel je oprávněn přistoupit přesně k požadovanému zdroji?
    • 2. Pokud je odkaz nepřímý: omezí aplikace při mapování na přímé odkazy přístup aktuálnímu uživateli na hodnoty, k nimž má oprávnění?

    Kontrola kódu (code review) aplikace může rychle ověřit, zda je přístup implementován bezpečně. K identifikaci odkazů na přímé zdroje a k posouzení, zda jsou bezpečné, je účinné též testování. Automatizované nástroje obvykle takovéto nedostatky nehledají, protože nejsou schopny rozpoznat, jaký zdroj vyžaduje ochranu, ani co je bezpečné nebo nebezpečné.

    Jak mohu předejít „nezabezpečeným přímým odkazům na objekty“?

    Prevence vyžaduje vhodný výběr metody ochrany každého objektu, který je dostupný uživatelům (např. číslo objektu nebo název souboru):

    • 1. Používejte nepřímé odkazy na objekty pro každého uživatele nebo relaci zvlášť. Zabráníte tím v přístupu útočníkům, kteří se zaměřují na neautorizované zdroje. Například místo databázového klíče zdroje použijte rozbalovací seznam šesti hodnot schválených pro aktuálního uživatele. K označení hodnoty, kterou si uživatel vybral, můžete použít čísla 1-6. Aplikace musí namapovat nepřímý odkaz specifický pro uživatele zpět na skutečný databázový klíč na serveru. V OWASP ESAPI jsou uvedeny mapy odkazů jak pro sekvenční, tak pro libovolný přístup, a ty mohou vývojáři použít místo přímých odkazů na objekt.
    • 2. Zkontrolujte přístup. Každé použití přímého odkazu na objekt z nedůvěryhodného zdroje musí obsahovat kontrolu přístupu a musí zaručit, že uživatel má práva k požadovanému objektu.
    Příklady možných útoků

    Aplikace používá neověřené údaje v dotazu SQL, který přistupuje k informacím o uživatelských účtech:

    String query = "SELECT * FROM accts WHERE account = ?";
    PreparedStatement pstmt = connection.prepareStatement(query , ... );
    pstmt.setString( 1, request.getParameter("acct"));
    ResultSet results = pstmt.executeQuery( );

    Útočník může jednoduše ve svém prohlížeči změnit parametr 'acct' a odeslat jakékoliv číslo účtu. Pokud není jeho požadavek ověřen, může útočník získat přístup nejen ke svému, ale k jakémukoliv účtu.

    http://example.com/app/accountInfo?acct=notmyacct

    Odkazy
    OWASP:

    Další informace ohledně požadavků na kontrolu přístupu viz ASVS requirements area for Access Control (V4).

    Externí:
    Originál o nezabezpečených přímých odkazech na objekty v angličtině