Jak skenovat a opravit chybu zabezpečení Log4j?
Zranitelnost v knihovně Log4j představuje jedno z nejzávažnějších ohrožení bezpečnosti v dnešních digitálních systémech.
Záznamy o událostech jsou nezbytnou součástí fungování moderních aplikací a Log4j je v této oblasti klíčovou knihovnou.
Je využívána v mnoha aplikacích, službách i celých systémech. To znamená, že veškerý software používající Log4j je potencionálně ohrožen touto zranitelností, která byla objevena minulý rok.
S narůstajícími celosvětovými obavami o kybernetickou bezpečnost podnikají firmy i jednotliví uživatelé kroky k zajištění ochrany svých aplikací, systémů a dat.
Objev této zranitelnosti vyvolal mezi profesionály a společnostmi značný neklid.
Z toho důvodu je detekce a následné odstranění zranitelnosti Log4j zásadní pro ochranu dat, firemní sítě, pověsti a důvěryhodnosti u zákazníků.
Tento článek se zaměří na to, co přesně zranitelnost Log4j představuje, a popíše kroky potřebné pro její odhalení a odstranění.
Nejprve si objasníme, co je Log4j a proč je tato knihovna důležitá.
Co je to Log4j?
Log4j je open-source nástroj pro záznam událostí, vyvinutý v jazyce Java, který slouží především k ukládání, formátování a publikování protokolů generovaných aplikacemi a systémy, a následné analýze chyb. Záznamy mohou obsahovat nejrůznější data, od informací o prohlížených webových stránkách a datech prohlížeče až po technické detaily o systému, na kterém Log4j běží.
Namísto programování vlastního kódu od základů mohou vývojáři využít knihovnu Log4j a integrovat její kód do svých aplikací.
S pomocí Log4j mohou vývojáři sledovat všechny události související s jejich aplikacemi, a to s detailními informacemi z protokolů. Tato možnost jim umožňuje monitorovat aplikace, rychle identifikovat problémy a řešit je dříve, než se stanou závažnými z hlediska výkonu či bezpečnosti.
Tato knihovna, založená na jazyku Java, byla vytvořena Ceki Gülcü a představena v roce 2001 pod licencí Apache 2.0. Využívá Java Naming and Directory Interface (JNDI), což aplikacím umožňuje komunikovat s dalšími aplikacemi (například LDAP, DNS, CORBA atd.) a získávat funkce adresářů a pojmenování pro aplikace postavené na jazyce Java. Log4j se skládá ze tří komponent, které plní své úkoly:
- Loggery slouží k zaznamenávání protokolových záznamů
- Rozvržení formátují protokolové záznamy do různých stylů
- Appendery odesílají protokolové záznamy do různých míst určení
Log4j je jednou z nejznámějších logovacích knihoven a používají ji organizace napříč různými odvětvími a zeměmi. Tuto knihovnu integrovaly do mnoha aplikací, včetně předních cloudových služeb od společností jako Google, Microsoft, Apple, Cloudflare, Twitter a další.
Vývojář, Apache Software Foundation, představil Log4j 2, vylepšenou verzi Log4j, která řeší nedostatky nalezené v dřívějších verzích. Nicméně, minulý rok byla v Log4j odhalena zranitelnost, která při zneužití umožňuje útočníkům vniknout do aplikací a systémů, krást data, infikovat sítě a provádět další škodlivé aktivity.
Pojďme se na to podívat detailněji.
Co je to Log4Shell – zranitelnost Log4j?
Log4Shell je kritická zranitelnost v kybernetické bezpečnosti knihovny Log4j, která ovlivňuje samotný základ fungování této knihovny. Útočníkovi umožňuje ovládat zařízení nebo aplikace připojené k internetu prostřednictvím vzdáleného spuštění kódu. Pokud se útok podaří, mohou útočníci:
- Spustit libovolný kód na daném zařízení nebo systému
- Získat přístup ke všem sítím a datům
- Upravit nebo zašifrovat jakýkoli soubor v napadené aplikaci nebo zařízení
Tuto zranitelnost poprvé nahlásil 24. listopadu 2021 Chen Zhaojun, bezpečnostní expert ve společnosti Alibaba (čínský gigant v oblasti elektronického obchodu). Zranitelnost ovlivnila jejich servery Minecraft, a byla objevena 9. prosince týmem cloudové bezpečnosti Alibaba.
Následně NIST zveřejnil tuto zranitelnost v National Vulnerability Database a pojmenoval ji CVE-2021-44228. Apache Software Foundation pak tuto zranitelnost ohodnotila stupněm závažnosti CVSS 10. Toto hodnocení je udělováno zřídka a značí velmi závažnou situaci, protože je potenciál pro masivní a snadné zneužití, které může způsobit rozsáhlé škody organizacím i jednotlivcům.
Apache v reakci na zranitelnost vydal opravu, nicméně některé aspekty zůstaly neřešeny, což vedlo k dalším zranitelnostem:
- CVE-2021-45046, která usnadnila útoky typu DoS (Denial of Service) prostřednictvím vyhledávání JNDI
- CVE-2021-45105 umožňuje hackerům ovládat informace o kontextové mapě vláken a způsobit útoky DoS interpretací vytvořeného řetězce
- CVE-2021-44832 ovlivňuje všechny verze Log4j 2 prostřednictvím vzdáleného vkládání kódu (RCE)
Jak funguje Log4Shell?
Pro pochopení závažnosti a potenciálních škod, které Log4Shell může způsobit, je důležité znát princip jejího fungování.
Zranitelnost Log4Shell umožňuje útočníkovi vzdáleně vkládat libovolný kód do sítě a získat nad ní plnou kontrolu.
Tato sekvence kybernetických útoků začíná tím, že knihovna pro zaznamenávání událostí, jako je Log4j, shromažďuje a ukládá informace o protokolech. Pokud není k dispozici žádná knihovna pro záznam událostí, veškerá data ze serveru se archivují ihned po jejich shromáždění.
Nicméně, pokud je potřeba tato data analyzovat, nebo na základě konkrétních informací z protokolů provést nějaké akce, je zapotřebí knihovna, která data z protokolů analyzuje před jejich archivací.

Kvůli zranitelnosti Log4j, jakýkoli systém nebo aplikace používající Log4j se stává náchylným ke kybernetickým útokům. Knihovna pro zaznamenávání událostí spouští kód na základě poskytnutého vstupu. Hacker může přimět knihovnu k provedení škodlivého kódu, protože zranitelnost umožňuje manipulovat se vstupem.
Mezitím se na pozadí odehrává komplexní proces. Pokud je Log4j předán specificky vytvořený řetězec, volá LDP server a stahuje kód umístěný v jeho adresáři, aby jej následně mohl spustit. Útočníci tak mohou vytvořit LDAP server pro umístění škodlivého kódu, který jim umožní ovládnout jakýkoli server, na kterém se kód spouští. Poté odešlou řetězec, který nasměruje jejich škodlivý kód do cílové aplikace nebo systému a převezmou nad ním plnou kontrolu.
Tímto způsobem lze zneužít zranitelnost Log4j:
- Útočník vyhledá server s zranitelnou verzí Log4j.
- Odešle cílovému serveru požadavek s odkazem na jeho škodlivý LDAP server.
- Cílový server se místo ověření připojí přímo k tomuto LDAP serveru.
- Útočníci následně zašlou cílovému serveru odpověď od LDAP serveru, která obsahuje škodlivý kód. Kvůli zranitelnosti Log4j, která umožňuje přijímat kód a spouštět jej bez ověření, může hacker tuto slabinu využít k proniknutí do cílového serveru a zneužití připojených systémů, sítí a zařízení.
Jak může zranitelnost Log4j poškodit uživatele?
Zranitelnost Log4j je znepokojující, protože se používá v širokém spektru softwarových aplikací a systémů.
Vzhledem k tomu, že záznam událostí je základní funkcí většiny softwarových aplikací a Log4j je předním řešením, nalézá Log4j uplatnění v různých softwarových systémech.
Mezi oblíbené služby a aplikace, které využívají Log4j, patří například Minecraft, AWS, iCloud, Microsoft, Twitter, internetové směrovače, nástroje pro vývoj softwaru, bezpečnostní nástroje a mnoho dalších. Útočníci tak mohou cílit na obrovské množství aplikací, služeb a systémů od domácích uživatelů, softwarových vývojářů, poskytovatelů služeb i dalších profesionálů a jednotlivců.

Navíc zranitelnost Log4j se pro útočníky snadno zneužívá. Pro provedení útoku není zapotřebí vysoká úroveň odborných znalostí. To je důvod, proč počet útoků, které této zranitelnosti využívají, neustále narůstá.
Dopad zranitelnosti Log4j může mít následující formy:
- DoS útoky
- Útoky na dodavatelský řetězec
- Těžba kryptoměn
- Injekce malwaru, jako jsou ransomware a trojské koně
- Vkládání libovolného kódu
- Vzdálené spuštění kódu
A mnoho dalších.
Důsledkem těchto útoků může být ztráta kontroly nad aplikacemi, systémy i zařízeními, a vaše data se mohou stát obětí útočníků, kteří je mohou prodat, manipulovat s nimi nebo je zveřejnit. Vaše podnikání tak může utrpět škody z hlediska ochrany osobních údajů zákazníků, důvěryhodnosti, firemních tajemství a dokonce i prodeje a příjmů, nemluvě o rizicích spojených s dodržováním předpisů.
Dle jedné zprávy, více než 40 % globálních podnikových sítí zaznamenalo útoky způsobené touto zranitelností.
I když tedy ve svých aplikacích nepoužíváte žádné zranitelné verze Log4j, vaše integrace třetích stran je mohou používat, což vaši aplikaci vystavuje riziku útoku.
Je třeba poznamenat, že všechny verze Log4j před Log4j 2.17.0. jsou zranitelné; proto je nutné aktualizovat zapisovač, pokud jej používáte. Mezi významné dodavatele, kteří byli zranitelností Log4j postiženi, patří Adobe, AWS, IBM, Cisco, VMware, Okta, Fortinet a další. Pokud používáte produkty těchto společností, je nutné neustále sledovat své aplikace a pomocí bezpečnostních systémů opravovat problémy ihned po jejich výskytu.
Jak detekovat zasažené programy Log4j a opravit problémy
Zranitelnost Log4Shell má skóre CVSS 10. Všechny problémy v Log4j tedy ještě nejsou vyřešeny. Nicméně je vysoce pravděpodobné, že vy, nebo váš dodavatel třetí strany, používáte Log4j, který je použit ve vaší aplikaci.
Pokud tedy chcete chránit vaše data, systémy i síť, je nezbytné podniknout konkrétní kroky k nápravě.
#1. Aktualizujte vaši verzi Log4j

Aktualizace aktuální verze Log4j na Log 4j 2.17.1 je nejefektivnější technikou nápravy, pokud chcete ochránit vaše zařízení a aplikace před útoky, které vyplývají ze zranitelnosti Log4j.
Log4Shell je typ útoku nultého dne, který může potenciálně ohrozit váš softwarový ekosystém. Apache sice v nejnovějších verzích opravil některé zranitelnosti, nicméně pokud byl váš systém napaden ještě před upgradem, jste stále v ohrožení.
Z toho důvodu musíte nejen aktualizovat verzi, ale také okamžitě zahájit postupy reakce na incidenty, abyste zajistili, že ve vašich systémech a aplikacích nejsou žádná zranitelná místa, a zmírnili dopady útoků. Dále je nutné zkontrolovat všechny protokoly serveru, abyste nalezli indikátory kompromitace (IOC) a neustále monitorovali své systémy a síť.
#2. Využívejte nejnovější firewally a bezpečnostní systémy
Firewally, jako je Web Application Firewall (WAF) a firewally nové generace, mohou pomoci zabezpečit perimetr vaší sítě před útočníky. Skenují příchozí i odchozí datové pakety a blokují ty, které vykazují podezřelé chování. Je tedy nezbytné používat nejnovější firewally ve vaší síti a nastavit přísná odchozí pravidla, abyste zabránili útokům souvisejícím se zranitelností Log4j.
I když útočníci mohou firewally obejít, stále získáte určitou úroveň zabezpečení, která může blokovat požadavky útočníka.
Kromě toho je třeba aktualizovat všechny vaše bezpečnostní systémy, jako jsou systémy pro detekci průniku (IDS) a systémy pro prevenci průniku (IPS), pomocí nejnovějších signatur a pravidel. Tyto systémy pomohou blokovat nebo filtrovat provoz RMI a LDAP ještě před připojením ke škodlivému LDAP serveru.
#3. Implementujte MFA

Nastavení vícefaktorové autentizace (MFA) ve vašich aplikacích a systému poskytne lepší zabezpečení před útočníky. Nabídne druhou vrstvu zabezpečení, a to i v případě, že útočník překoná první vrstvu. To lze zajistit pomocí biometrických údajů, jako jsou otisky prstů, skenování duhovky, nastavení bezpečnostních otázek nebo povolením bezpečnostního kódu PIN.
Použití MFA ztíží útočníkům provedení plnohodnotného útoku a prodlouží čas potřebný k jeho uskutečnění. Zároveň vás může okamžitě informovat o incidentu, abyste mohli včas podniknout potřebné kroky k nápravě.
Kromě toho je třeba implementovat i přísná VPN pravidla, která omezí únik dat. Uživatelům tak bude umožněn bezpečný přístup do vašich systémů odkudkoli bez obav z útoku.
#4. Změňte vlastnosti systému
V případě, že není možné provést upgrade na nejnovější verzi knihovny Log4j, je nutné okamžitě změnit vlastnosti systému Java, pokud používáte verzi od Log4j 2.10 do Log4j 2.14.1.
Je třeba zabránit vyhledávání, které útočníci využívají k odhalení zranitelnosti a následně hledání cest k jejímu zneužití.
#5. Odstraňte JNDI
Podstatou této kritické bezpečnostní zranitelnosti je její design. Plugin JNDI Lookup má konstrukční vadu, pomocí které mohou útočníci provádět útok.
JNDI slouží pro spouštění kódu na základě vstupních dat v protokolech, se kterými může kdokoli snadno manipulovat, protože zapisovač přijímá jakýkoli požadavek bez ověření.
Bezpečnostní experti zjistili, že tento plugin od svého vydání v roce 2013 vždy povoloval neanalyzovaná data a odesílal je do knihovny Log4j.
Zranitelnost Log4j je proto náchylná ke zneužití pomocí jednoduchého vložení řetězce. Jakmile jej útočník vloží, zapisovač přijme požadovanou operaci a provede ji ihned bez ověření.
Chcete-li tedy zabezpečit vaše systémy a aplikace, je nezbytné zakázat třídu JndiLookup. Tímto se zabrání tomu, aby zapisovač prováděl akce na základě protokolových dat.
Ve skutečnosti je vyhledávání JNDI již v Log4j 2.16.0 ve výchozím nastavení zakázáno s cílem zvýšit bezpečnost vašich aplikací a systémů.
Pokud tedy používáte verzi Log4j nižší než 2.16.0, je důležité zakázat vyhledávání JNDI.
#6. Komunikujte s vašimi dodavateli
I když máte vše v pořádku, firewally a bezpečnostní systémy jsou aktualizované, verze Log4j je aktualizovaná, vyhledávání JNDI je zakázáno atd., ještě nepolevujte.
I když ve vašich aplikacích nepoužíváte zranitelnou verzi Log4j, mohou ji používat vaši dodavatelé třetích stran. Nikdy tak nezjistíte, jak došlo k narušení vaší aplikace nebo systému, protože skutečný problém byl u vaší integrace třetí strany.
Proto je nutné komunikovat s vašimi dodavateli a ujistit se, že i oni aktualizovali Log4j na nejnovější verzi a implementovali další bezpečnostní opatření popsaná výše.
#7. Používejte skenery zranitelnosti Log4j
Na trhu je k dispozici mnoho nástrojů pro skenování zranitelnosti Log4j, které vám mohou usnadnit odhalení zranitelností Log4j ve vašich systémech a aplikacích.
Při výběru těchto nástrojů je potřeba ověřit jejich přesnost, protože mnoho z nich generuje falešně pozitivní výsledky. Dále je důležité vybrat nástroj, který odpovídá vašim potřebám, protože se může zaměřovat na identifikaci zranitelnosti Log4j, hlášení expozice a nápravu zranitelnosti.
Pokud se zaměřujete na detekci, vyhledejte skener zranitelnosti Log4j, který dokáže problém odhalit, nebo použijte takový, který dokáže problém detekovat a i opravit.

Mezi nejlepší nástroje pro skenování Log4j patří například:
- Microsoft 365 Defender: Microsoft nabízí řadu bezpečnostních řešení a nástrojů, které vám pomohou odhalit a zabránit zneužití Log4j ve vaší síti. Dokáže identifikovat vzdálené spuštění kódu a pokusy o zneužití, a chrání vás před zranitelností Log4j v zařízeních Windows a Linux.
- Amazon Inspector a AWS: Amazon vytvořil skenovací nástroj pro vyhledání zranitelnosti Log4j v instancích Amazon EC2 a Amazon ECR.
- CloudStrike Archive Scan Tool (CAST): CloudStrike také vyvinul skvělý skenovací nástroj pro detekci zranitelnosti Log4j, který vám pomůže vyřešit problémy včas, ještě před tím, než je útočníci zneužijí.
- Google Cloud Logging Detection: Řešení detekce protokolování cloudu od Google vám umožňuje detekovat zneužití Log4j pomocí Průzkumníka protokolů. V tomto nástroji je možné vytvořit dotaz na protokol a vyhledat potenciální řetězce zneužití.
- Google také vytvořil log4jscanner, open-source skener souborového systému pro detekci zranitelnosti Log4j.
- BurpSuite Log4j Scanner: Jedná se o bezpečnostní plugin pro profesionály a firmy, který jim pomáhá detekovat zranitelnost Log4j.
- Huntress Log4Shell Vulnerability Tester: Tento nástroj náhodně generuje jedinečný identifikátor, který můžete použít při testování vstupních polí. Pokud je v aplikaci nebo vstupním poli nalezena zranitelnost, jeho zabezpečený server LDAP okamžitě ukončí škodlivé spojení a tím vám zajistí bezpečnost.
- WhiteSource Log4j Detect: WhiteSource vytvořil bezplatný nástroj CLI WhiteSource Log4j Detect, který je hostovaný na GitHubu a pomáhá detekovat a opravovat zranitelnosti Log4j – CVE-2021-445046 a CVE-2021-44228.
- JFrog Open-Source Scanning tools for Log4j: JFrog vyvinul různá open-source řešení a nástroje pro nalezení zranitelností Log4j ve vašich binárních souborech i zdrojovém kódu.
Závěr
Zranitelnost Log4j je kritickým problémem z hlediska bezpečnosti. Vzhledem k tomu, že se tato knihovna pro zaznamenávání událostí široce používá v různých aplikacích i systémech, rozšířila se i zranitelnost Log4j a umožňuje útočníkům zneužívat široké spektrum systémů a aplikací.
Pokud tedy chcete ochránit vaše systémy a aplikace před touto zranitelností, ujistěte se, že jste aktualizovali knihovnu Log4j na nejnovější verzi a implementovali osvědčené postupy zabezpečení popsané výše.