Přeskočit na hlavní obsah

Porušení oprávnění na úrovni objektu

  • Autorizace na úrovni objektu = mechanismus na úrovni kódu, který ověřuje, zda má uživatel oprávnění k přístupu k danému objektu.
  • Každé API, které pracuje s objektem na základě obdrženého ID, by mělo implementovat autorizaci na úrovni objektu.
  • Zranitelnost dále vede k neautorizovanému přístupu a manipulaci s daty, úniku informací nebo jejich zničení.

Jak zranitelnosti předcházet

🔴 Implementujte autorizační logiku na bázi atributů (ABAC) nebo BOLA.

🔴 Ověřte, zda má uživatel oprávnění k vykonání požadované akce nad daným záznamem, a to v každé funkci, která používá vstupní data pro přístup k záznamu.

🔴 Použijte náhodná a nepředvídatelná ID (např. UUID).

🔴 Napište automatické testy pro celý autorizační mechanismus.

🔴 Nedeployujte změny, které zapříčiní selhání testů.

Příklady zneužití zranitelnosti

  1. E-shop platforma obsahuje URL, na které jsou zobrazeny odměny partnerských obchodů.
    • Útočník URL jednoduše objeví pomocí automatizovaného nástroje (/partners/<name>/revenue.json).
    • Útočník může jednotlivé stránky procházet změnou <name> parametru (/partners/tchibo/revenue.json).
  2. Automobilka vytvořila funkci pro vzdálené ovládání vozidla.
    • Vozidlo je možné ovládat mobilní aplikací, která komunikuje se serverem přes API.
    • API umožňuje auto nastartovat, odemknout dvěře nebo kufr.
    • Aby to bylo možné, musí uživatel zadat VIN kód svého vozidla.
    • API nekontroluje, jestli VIN kód patří danému uživateli, díky čemuž je možné manipulovat s cizím vozidlem.
    • Podívejte se na reálné zneužití tohoto příkladu.
  3. Online úložiště umožňuje uživatelům sledovat, editovat a mazat soubory.
    • Pro smazání dokumentu se používá GraphQL dotaz, který používá ID dokumentu jako parametr.
    • Aplikace nekontroluje, jestli je uživatel vlastníkem dokumentu, a tak může kdokoli smazat jakýkoli dokument.
    • I přes to, že frontend aplikace neumožňuje změnit ID, útočník může použít např. Postman a GraphQL dotaz spustit bez ohledu na frontend aplikaci.

Kam dál

Cheat sheety

Checklisty

Další