Log4j a CzechIdM
Určitě jste zaznamenali informaci o tom, že v knihovně Log4j byla objevena zranitelnost CVE-2021-45046, která umožňuje potenciálnímu útočníkovi provést JNDI lookup a tím v aplikaci spustit svůj vlastní kód.
V tomto článku se dozvíte jaký dopad má tato zranitelnost na bezpečnost CzechIdM, jaké kroky podnikáme, abychom zabránili zneužití této zranitelnosti a několik tipů, jak se vypořádat s CVE-2021-44228 ve svých aplikacích.
Dopad CVE-2021-44228 na CzechIdM
CzechIdM je postavené na Spring framework (spring.io) a k logování používá knihovnu logback (https://logback.qos.ch/). Logback není touto zranitelností postižen, proto ani samotné CzechIdM jako takové CVE-2021-44228 netrpí.
Jsme si opravdu jistí?
Ano jsme. V CzechIdM nepoužíváme log4j-core
$ mvn dependency:list | grep log4j
[INFO] org.apache.logging.log4j:log4j-api:jar:2.11.2:compile
[INFO] org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.2:compile
log4j-api a log4j-to-slf4j se CVE-2021-44228 netýká, jak zmiňuje https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228 a https://spring.io/blog/2021/12/10/log4j2-vulnerability-and-spring-boot.
Jak šel čas s CVE-2021-44228
10.12.2021
Byla nahlášena zranitelnost CVE-2021-44228
- https://nvd.nist.gov/vuln/detail/CVE-2021-44228
- https://nukib.cz/cs/infoservis/hrozby/1781-upozorneni-na-zranitelnost-apache-log4j-log4shell/
Jako záplata bylo doporočeno nastavit konfiguraci log4j2.formatMsgNoLookups=true.
Log4j zareagovalo vydáním verze 2.15.0, kde závadnou funkcionalitu defaultně vypíná.
14.12.2021
Byla nahlášena zranitelnost CVE-2021-45046
Log4j reaguje vydáním verze 2.16.0, kde inkriminovanou funkcionalitu zcela vypíná. Ukázalo se totiž, že předchozí oprava není dostačující pro určité konfigurace log4j.
16.12.2021
Byla nahlášena zranitelnost CVE-2021-42550
Tato zranitelnost se týká knihovny logback, kterou používá i CzechIdM. Logback neumožňuje JNDI lookup na úrovni logovacích hlášek, ale v konfiguračních souborech ano. To v praxi znamená, že pokud by útočník měl přístup ke konfiguračním souborům logback pro CzechIdM, mohl by tuto zranitelnost využít.
18.12.2021
Byla nahlášena zranitelnost CVE-2021-45105
Zde se ukázalo, že předchozí verze umožňovala útočníkovi provést formu DoS útoku vytvořením nekonečné smyčky.
Log4j reaguje vydáním verze 2.17.0
Co musím udělat, abych CzechIdM zabezpečil?
Z předchozího vyplývá, že v tuto chvíli víme pouze o jedné zranitelnosti, která může mít potenciální dopad na CzechIdM a to je CVE-2021-42550. Tuto zranitelnost může útočník zneužít pouze v případě kdy:
- Útočník má právo zápisu do konfiguračního souboru logback.xml
- Aplikace používá logback 1.2.9 a nižší
- Útočník má možnost restartovat aplikaci, nebo před útokem je zapnuto scan=true v konfiguraci logback
Z těchto prerekvizit si můžeme snadno odvodit, jak útok znemožnit:
- Konfigurační soubor logback.xml je uložen na bezpečném místě (právo číst a zapisovat má pouze k tomu určený uživatel)
- Není zapnutá funkce scan, která obnovuje konfiguraci bez nutnosti restartu
- Právo restartovat server s CzechIdM má pouze privilegovaný uživatel
Co dál?
Jak si můžete všimnout, oprava log4j byla značně hektická a nové verze vycházely v rozmezí několika dní. Naštěstí pro nás není žádná z těchto zranitelností problematická a můžeme si tedy dovolit počkat, až se situace kolem log4j uklidní a budeme si jistí, že upgradem na novou verzi nezaneseme do CzechIdM kód šitý horkou jehlou.
Další informace
- https://www.slf4j.org/log4shell.html
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45046
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45105
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-42550