Zanimivosti

OPOZORILO: odkrita pomembna ranljivost

CERT opozarja: kritična ranljivost Java knjižnice Apache Log4j

Slovenski CERT je opozoril na zelo pomembno ranljivost Java knjižnice Apache Log4j, ki lahko v primeru, da je ne odpravite, povzroči izjemno resne posledice za baze podatkov in sisteme.

Priporočamo, da o ranljivosti čim prej obvestite vašo IT službo (če morda tega še ne vedo) s priporočilom, daje treba pomanjkljivost nujno obravnavati kot visoko prioriteto tudi z vidika varnosti obdelave osebnih podatkov. Če v vaši organiazaciji tega sistema ne uporabljate, potem ni treba storiti ničesar.

V nadaljevanju kopiramo tudi sporočilo za javnost s strani cert.si, da boste morda informacijo lažje in hitreje prenesli do vaših odločevalcev.

Sporočilo slovenskega CERT

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.

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).

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.14.1.

Novejše verzije JDK imajo sicer onemogočen parameter com.sun.jndi.ldap.object.trustURLCodebase, vendar pa to ne ščiti pred novejšimi vrstami napadov.

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”:

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.

Ranljivost je odpravljena v verziji knjižnice 2.15.0. Ker obstaja možnost, da ta verzija ne bo ščitila v vseh primerih napadov, priporočamo nadgraditev knjižnice na verzijo 2.16.0, v kateri je privzeto onemogočen JNDI.

Če namestitev popravka ni mogoča, se lahko izrabo ranljivosti onemogoči z uporabo stikala -Dlog4j2.formatMsgNoLookups=true. ob zagonu JVM aplikacije, oz. nastavitvijo spremenljivke okolja LOG4J_FORMAT_MSG_NO_LOOKUPS=true Če aplikacija za delovanje uporablja Lookups funkcionalnost, lahko uporaba tega stikala vpliva na delovanje aplikacije.

Ostali mehanizmi za preprečevanje izrabe (mitigation) so objavljeni na spletni strani proizvajalca.

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:

Vir: https://www.cert.si/si-cert-2021-06/

 

Povezani članki

Poglejte tudi
Close
Back to top button