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).
- nejsou známy verze všech používaných komponent (na straně klienta i serveru),
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
- 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.