Přeskočit na hlavní obsah

Zranitelné a zastaralé komponenty

  • Aplikace je zranitelná, pokud
    • nejsou známy verze všech používaných komponent (na straně klienta i serveru),
      • Zahrnuje přímo používané i vnořené závislosti.
    • je software zranitelný, zastaralý nebo nepodporovaný,
      • Zahrnuje OS, web / aplikační server, DB, aplikace, API rozhraní a komponenty, runtime prostředí a knihovny.
    • neexistuje pravidelná kontrola zranitelností,
    • platforma, framework nebo závislost není včas upgradována na základě rizik,
      • To se běžně stává v prostředích, kde je oprava měsíčním nebo čtvrtletním úkolem v rámci řízení změn, čímž se organizace vystavují zbytečnému riziku v rámci dnů nebo měsíců.
    • jsou používány neudržované komponenty třetích stran,
    • vývojáři netestují kompatibilitu aktualizovaných, upgradovaných nebo opravených knihoven,
    • není zabezpečena konfigurace komponent (viz security misconfiguration).

Jak zranitelnosti přecházet

🔴 Zajistěte průběžný plán monitorování a správy aktualizací nebo změn konfigurace po celou dobu životnosti aplikace.

🔴 Zaveďte proces správy záplat.

🔴 Odstraňte nepoužívané závislosti, zbytečné funkce, komponenty, soubory a dokumentaci.

🔴 Průběžně kontrolujte verzi komponent na straně klienta i serveru pomocí nástrojů jako OWASP Dependency check, retire.js atd.

🔴 Průběžně sledujte zdroje jako CVE, NVD a NÚKIB pro vyhledávání zranitelností v komponentách.

🔴 Automatizujte celý proces se software composition analysis nástroji.

🔴 Odebírejte newslettery upozorňující na bezpečnostní zranitelnosti související s komponentami.

🔴 Instalujte komponenty pouze z oficiálních zdrojů prostřednictvím zabezpečených odkazů.

🔴 Dejte přednost podepsaným / ověřeným balíčkům, čímž snížíte pravděpodobnost, že obsahují modifikovanou nebo škodlivou komponentu (viz selhání integrity software a dat).

🔴 Monitorujte knihovny a komponenty, které nejsou udržovány nebo nevytvářejí bezpečnostní záplaty pro starší verze.

  • Zvažte nasazení virtuální záplaty, která bude zjištěný problém monitorovat, detekovat nebo před ním chránit, není-li záplatování možné.

Příklad zneužití zranitelnosti

  1. Komponenty obvykle běží se stejnými právy jako samotná aplikace, takže chyby v kterékoli komponentě mohou mít závažný dopad. Tyto chyby mohou být náhodné (chyba v kódování), nebo úmyslné (zadní vrátka v komponentě). Příklady zneužitých chyb, které byly objeveny jsou například:
    • CVE-2017-5638: zranitelnost umožňující vzdálené spuštění libovolného kódu na serveru.
    • Internet věcí (IoT) je často obtížné nebo nemožné opravit, ale význam jejich oprav může být velký (např. biomedicínská zařízení).
  • Existují automatizované nástroje, které útočníkům pomáhají najít neopravené nebo špatně nakonfigurované systémy.
    • Např. vyhledávač Shodan IoT pomůže najít zařízení, které stále trpí zranitelností Heartbleed opravené v dubnu 2014.

Kam dál

Cheat sheety

Checklisty

Další