Kritična ranjivost Java biblioteke log4j

Dana 9. prosinca 2021. objavljena je nova ranjivost nultog dana u popularnom Java paketu za evidentiranje log4j, naziva Log4Shell (CVE-2021-44228).
 
Log4j je tradicionalno najodabraniji okvir zapisa dnevničkih zapisa za Java aplikaciju, te je prisutan u velikom broju proizvoda, uključujući uređaje kod kojih zakrpe mogu biti problematične ili nemoguće. Ranjivost je kritična iz razloga što je dovoljno da potencijalni napadač pošalje zloćudni niz koji informacijski sustav bilježi i uspostavlja komunikaciju sa navedenim. S obzirom na navedeno rute eksploatacije su široke i često ne zahtijevaju razinu provjerenog pristupa.
 
Postoje tri primarna čimbenika koji ranjivost log4shell čine posebno opasnom, što dovodi do CVSS ocjene od 10,0:
  • Ranjivost je relativno lako iskoristiti – to jest, napadaču je potrebna samo mogućnost kontrole nizova koji će se zabilježiti putem log4j biblioteke.
  • Zbog širine spektra različitih ruta za potencijalni napad (mnogo različitih operacija se bilježi i mogu se kontrolirati od strane napadača) jedini kompletni način uklanjanja ranjivosti je nadogradnja na zadnju verziju.
  • Veliki broj komponenti tehnologija koristi log4j – širok spektar ranjivosti.
Trenutna lista zahvaćenih tehnologija (puni opseg utjecaja ranjivosti se još i dalje utvrđuje i nadopunjava):
 
Predložene mitigacijske mjere su kako slijedi:
 
1. Identificiranje ranjivog softvera/uređaja:
Skripta koja otkriva log4j verzije na datotečnim sustavima, uključujući rekurzivnu pretragu
Automatiziran i opsežan skener za pronalaženje ranjivih log4j sustava
2. Preporučena mjera uklanjanja ranjivosti - ažuriranje Log4j:
Najbolja zaštita od ove ranjivosti je ažurirati sve verzije 2.x Log4j na 2.17.0.   Update: 28.12.2021 - ažurirati na verziju 2.17.1 (https://logging.apache.org/log4j/2.x/security.html)

3. Primjena zadnjih dostupnih ažuriranja tehnologija/uređaja čiji uređaji koriste Log4j

4. Blokiranje potencijalno zloćudnih zahtjeva na WAF-u.

JNDI pretraživanja potrebna za iskorištavanje ranjivosti koriste specifičan prefiks za Log4j kako bi se izvelo slanje zahtjeva. Svaki zahtjev s nizom poput `${jndi:xyz}` potaknut će JNDI da pošalje zahtjev prema potencijalno zloćudnoj adresi/domeni. U slučaju da niste u mogućnosti ažurirati biblioteku (točka 2.) ili onemogućiti slanje zahtjeva (točka 3.) preporučamo da dodate prefiks `${jndi:` na vatrozidu web aplikacije u crnu listu (engl. Blacklist) kako bi vatrozid blokirao potencijalne pokušaje iskorištavanja. Potrebno je imati na umu da je ovaj pristup, po svojoj prirodi, nepotpun i moguće je ovu vrstu „zaštite“ zaobići, ali ovaj jednostavan pristup otežati će skeniranje Vaših informacijskih sustava.

5. Primjena dodatnih alata za provjeru:

Ostale mitigacijske mjere - Onemogućiti slanje zahtjeva Log4j biblioteci:
U slučaju nemogućnosti ažuriranja verzije Log4j biblioteke potrebno je omogućiti zabranu slanja zahtjeva navedenoj biblioteci:
 ‐Dlog4j2.formatMsgNoLookups=true
na JVM onemogućit će Log4j slanje zahtjeva i zaštititi sustav od eksploatacije.

Navedena mjera više nije dovoljna za zaštitu: https://logging.apache.org/log4j/2.x/security.html#CVE-2021-45046