6.4 Insecure Direct Object Reference (IDOR)
Když webová aplikace umožňuje uživatelům interakci s databázovými záznamy či objekty pomocí identifikátorů, musí také kontrolovat autorská/přístupová práva. Selhání této validace je podstatou IDOR.
Insecure Direct Object Reference (IDOR)
Druh zranitelnosti (součást širší kategorie Broken Access Control), při které aplikace nedostatečně ověřuje práva uživatele na přístup k odkazovanému objektu. Útočník může např. změnou parametru (id, uživatelské jméno, token) v HTTP požadavku získat neoprávněný přístup k datům ostatních uživatelů.
Identifikátory v praxi
Nejčastější problémy vznikají s předvídatelnými číselnými identifikátory.
Inkrementální celá čísla (Integers)
Nejbanálnějším případem je, když uživatel vidí URL například s
&invoiceId=123. Pouhou změnou čísla na 122 nebo 124 dostane přístup k fakturám ostatních uživatelů, protože systém za oponou nekontroluje, zda je přihlášený uživatel k dotyčné faktuře skutečně oprávněn přistupovat.Útok hrubou silou na číselné identifikátory
Co když čísla nejsou sekvenční (inkrementální), ale stále relativně krátká? Například parametr
&lotteryNumber=833215. Pomocí nástrojů (jako např. Turbo Intruder pro Burp Suite), které zvládají udělat i desítky tisíc požadavků za sekundu, může útočník kompletní prostor šestimístných čísel ([0-9]{6}) prolomit metodou brute-force za desítky vteřin.Obrana pomocí GUID / UUID
Z bezpečnostního hlediska je lepší nahradit predikovatelná či vyčíslitelná celá čísla takzvanými GUID (Globally Unique Identifier) / UUID (Universally Unique Identifier). Nicméně, ani zde není obrana zaručena, pakliže nejsou použity správně.
Generace UUID (RFC 4142 / RFC 9562)
UUID specifikuje různé verze, které mají naprosto rozdílný stupeň entropie a zranitelnosti:
- UUIDv1: Je vysoce předvídatelné, neboť využívá kombinaci timestampu (času generování) a MAC adresy. Může vést k IDOR a Replay útokům. Pomocí nástroje
guidtoollze u těchto tokenů zjistit přesný čas a MAC adresu. - UUIDv3: Deterministické na bázi MD5 haše, pokud známe vstup (např. email), jsme schopni jej vygenerovat.
- UUIDv5: Obdoba v3, ovšem s lepším hashem SHA-1 (přesto uhádnutelné/slabé).
- UUIDv4: Plně náhodné a pro útočníka v podstatě nemožné předpovědět (silné vůči výčtu).
- UUIDv7: Náhodnost jako v4, avšak uspořádatelné v čase (vhodné pro primární klíče v databázích).
Masový IDOR na Facebooku
I u UUID je třeba validovat oprávnění na straně serveru! Pokud je parametr např.
/passwordReset?token=UUIDv1... uhodnutelný nebo je použitelný s jiným kontextem (kdy uživatel zjistí tokeny pro jiné uživatele – například na Facebooku v roce 2019 byly iterováním odhaleny stovky miliónů čísel telefonů).Okrajové (Edge-case) chyby s IDOR
- Statické prostředky (např. Fotografie zpráv): Odkazy na ně nejsou často chráněny cookies pro ověření uživatele. Každý, kdo daný odkaz získá (uhodne/leakne), vidí obsah.
- Self-approvals: Odsouhlasení žádostí, kde si útočník posílá požadavek na zobrazení informací (např. masivní assignment zranitelnost nebo povolování oprávnění, jelikož HTTP parametr na to není řádně zkonstruován pro readonly ochranu).