Skoči na vsebino

SI-CERT 2021-06 / Kritična ranljivost Java knjižnice Apache Log4j

Objavljeno: 10.12.2021
Zadnja posodobitev: 31.12.2021

Povzetek

Kritična ranljivost knjižnice Log4j omogoča napadalcu izvedbo poljubne programske kode na ranljivem sistemu (RCE – Remote Code Execution). Ranljivost se proži ob zapisu podatka v dnevnik in se lahko izrablja tudi na sistemih, ki niso javno dostopni na internetu, vendar do njih vodi ustrezna podatkovna pot. Ranljivost najdemo tako v odprtokodnih aplikacijah, lastnih rešitvah in številnih komercialnih produktih. Identifikacija vseh ranljivih komponent je zahtevna, univerzalne rešitve za različne postavitve sistemov ni.

Opis

V programski knjižnici Java logging library Log4j je bila odkrita kritična ranljivost z oznako CVE-2021-44228, ki napadalcem omogoča izvajanje poljubne kode na sistemu (RCE – Remote Code Execution) ali krajo občutljivih informacij. Do zlorabe ranljivosti pride ob zapisu posebnega niza znakov, ki vsebuje JNDI zahtevek, v dnevniško datoteko. Ranljivost se že aktivno izkorišča v napadih na omrežju. Tekom analize ranljivosti sta bili v predmetni knjižnici odkriti še ranljivosti CVE-2021-45046, ki omogoča izvedbo kode na daljavo (RCE), ter CVE-2021-45105, ki omogoča izvedbo napada z zavrnitvijo storitve (DoS, Denial-of-service)

Log4j je popularna programska knjižnica, ki jo uporablja veliko število Java aplikacij. Ranljive so tako strežniške aplikacije kot odjemalci. Posebej opozarjamo, da so lahko ranljive tudi aplikacije, ki niso javno dostopne, vendar pa procesirajo podatke iz javno dostopnih virov (npr. obdelovanje dnevniških zapisov). Ranljivost je mogoče izkoristiti tudi v aplikacijah, ki imajo odprt web socket zgolj lokalno na sistemu, npr. preko napada v mimohodu.

Potek Log4j napada in kako ga preprečiti (CC-BY-SA GovCERT.ch)

Ranljive verzije knjižnice

Ranljive so verzije Apache Log4j od vključno 2.0-beta9 do vključno 2.16.0.

Ranljivi produkti

Številne programske rešitve, aplikacije in naprave uporabljajo knjižnico, kar še poveča izpostavljenost ranljivosti. Za preverjanje stanja posameznega proizvajalca priporočamo seznam, ki ga vodi nizozemski NCSC-NL in se posodablja s podatki ostalih članov Mreže CSIRT: https://github.com/NCSC-NL/log4shell, razdelek “software”.

Iskanje ranljivih knjižnic

Pri iskanju ranljivih Log4j knjižnic na sistemu si lahko pomagate z orodjem log4jscanner, ki ga je na GitHub.org objavil Google. Orodje omogoča tudi popravek nameščenih JAR knjižnic z odstranitvijo JndiLookup.class razreda.

Priporočeni ukrepi za lastno razvite in odprtokodne aplikacije

Skrbnikom sistemov svetujemo čimprejšnjo identifikacijo vse programske opreme, ki uporablja ranljivo knjižnico ter namestitev popravkov oz. izvedbo mitigacijskih mehanizmov.

Priporočamo nadgraditev knjižnice na verzijo 2.17.0.

Če namestitev popravka ni mogoča, proizvajalec priporoča odstranitev JndiLookup.class iz iskalne poti (classpath). To lahko storite z orodjem log4jscanner, ali ročno z ukazom oblike:

zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

Bolj natančno so mitigacijski mehanizmi za preprečevanje izrabe objavljeni na spletni strani proizvajalca. Opozarjamo, da je po podatkih proizvajalca predhodno priporočena izvedba mitigacije preko stikala log4j2.formatMsgNoLookups oz. spremenljivke LOG4J_FORMAT_MSG_NO_LOOKUPS pomanjkljiva oz. nezadostna.

Priporočeni ukrepi za druge produkte

V primeru uporabe aplikacij, ki uporabljajo ranljivo knjižnico, in te ni možno enostavno zamenjati, spremljajte obvestila proizvajalca aplikacije. Obsežen seznam ranljive programske opreme in trenutni status zaščite se nahaja na spletni strani https://github.com/NCSC-NL/log4shell/tree/main/software

V Windows sistemih se lahko ranljiva programska oprema identificira s spodnjim Powershell ukazom:

gci 'C:\' -rec -force -include *.jar -ea 0 | foreach {select-string "JndiLookup.class" $_} | select -exp Path

Skrbnikom sistemov svetujemo detekcijo oz. blokado izhodnega prometa, ki ni potreben za delovanje sistema (npr. DNS, LDAP, RMI ipd.). Uspešna izraba ranljivosti se lahko kaže v dnevniški datoteki aplikacije, če ta vsebuje niz “com.sun.jndi.” (gre za nepreverjeno informacijo).

Detekcija poskusov zlorabe ranljivosti

Splošni regularni izraz za prepoznavo poskusa zlorabe ranljivosti je:

\${(\${(.*?:|.*?:.*?:-)('|"|`)*(?1)}*|[jndi:lapsrm]('|"|`)*}*){9,11}

Poskusi zlorab ranljivosti so razvidni v dnevniških datotekah spletnih strežnikov v zahtevkih, ki pri najbolj enostavnih poskusih v enem od parametrov vsebujejo niz v obliki ${jndi:ldap://…}. Pri iskanju se lahko uporabi Yara pravilo ali ukaz v spodnji obliki (za bolj natančne zadetke uporabite zgornji regularni izraz, spodnjega podajamo za namen boljše berljivosti in ponazoritve):

egrep -i -r '\$\{jndi:(ldap[s]?|rmi)://[^\n]+' /var/log
find /var/log -name \*.gz -print0 | xargs -0 zgrep -E -i '\$\{jndi:(ldap[s]?|rmi)://[^\n]+'

Nizi so lahko zamaskirani, večji nabor zato najde prvi regularni izraz. Uporabite lahko orodje log4shell-detectorV primeru uporabe nekaterih javno dostopnih skript za zamaskiranje kode je edini prepoznavni vzorec poskusa zlorabe niz znakov celo samo ${.

Indikatorji zlorabe (IoC)

Spisek različnih seznamov indokatorjev zlorabe (IoC, Indicator of Compromise) najdete na:

Zunanje povezave

Preberite tudi

SI-CERT 2021-05 / Kritične ranljivosti Microsoft Exchange (ProxyShell)

Prva objava: 19. 8. 2021 Povzetek Veriga ranljivosti v Microsoft Exchange omogoča oddaljeno podtikanje in zagon poljubne kode (RCE, Remote Code Execution) z administratorskimi pravicami. Gre za drugačno verigo od …
Več

SI-CERT 2021-04 / Kritična ranljivost Microsoft Windows Print Spooler servisa

Ranljivost omogoča kateremukoli avtenticiranemu uporabniku oddaljeno izvajanje kode s privilegiji SYSTEM uporabnika na sistemih Microsoft Windows, ki imajo omogočen Print spooler servis. PoC koda, ki omogoča izkoriščanje ranljivost, je že javno objavljena.
Več

SI-CERT 2021-03 / Širjenje okužb s trojanskim konjem QBot

Povzetek QBot (tudi Qakbot) je trojanski konj, prvenstveno namenjen kraji podatkov iz okuženega sistema, ki je v različnih oblikah prisoten že več kot 10 let. V zadnjih različicah je pridobil …
Več