O patch de emergência para a infame vulnerabilidade na biblioteca Java Log4j não é infalível. A Apache Software Foundation está lançando uma nova versão para corrigir a vulnerabilidade de uma vez por todas.
Uma vulnerabilidade em uma biblioteca muito popular para Java está abalando o cenário global de TI. Estima-se que a biblioteca exista na maioria dos ambientes corporativos.
Log4j é usado principalmente para log. Eventos em aplicativos podem ser registrados com notas. Pense em uma impressão dos detalhes de login após uma tentativa de login. Ou, no caso de um aplicativo da Web em Java, o nome do navegador ao qual um usuário está tentando se conectar.
Os últimos exemplos são comuns. Em ambos os casos, um usuário externo influencia o log gerado pelo Log4j. É possível abusar dessa influência. Os logs de qualquer versão do Log4j entre 13 de setembro de 2013 e 5 de dezembro de 2021 podem instruir os aplicativos Java a executar o código de um servidor remoto em um dispositivo local.
Desde 2013, o Log4j processa uma API: JNDI, ou Java Naming and Directory Interface. A adição de JNDI permite que um aplicativo Java execute código de um servidor remoto em um dispositivo local. Os programadores instruem adicionando uma única linha de detalhes sobre o servidor remoto em um aplicativo.
O problema é que não só os programadores conseguem adicionar a regra aos aplicativos. Suponha que o Log4j registre os nomes de usuário das tentativas de login. Quando alguém insere a linha mencionada no campo nome de usuário, o Log4j executa a linha e o aplicativo Java interpreta um comando para executar o código no servidor especificado. O mesmo vale para os casos em que o Log4j registra uma solicitação HTTPS. Se você alterar o nome de um navegador para a linha, o Log4j executa a linha, instruindo-a indiretamente a executar o código conforme desejado.
Patch de emergência também pode ser inseguro
Em 9 de dezembro, a vulnerabilidade veio à tona em grande escala. A Apache Software Foundation, desenvolvedora do Log4j, lançou um patch de emergência (2.15) para corrigir a vulnerabilidade. Desde então, tem sido uma prioridade para os fornecedores de software processar a versão 2.15 e fornecer um patch para as organizações.
No entanto, a organização de segurança LunaSec afirma que o patch não é completamente à prova d'água. Continua sendo possível ajustar uma configuração e executar comandos JNDI registrados.
Observe: a configuração relevante deve ser ajustada manualmente, para que as variantes não modificadas de 2.15 sejam realmente seguras. No entanto, Luna Sec recomenda que fornecedores e organizações atualizem para Log4j 2.16. 2.16 foi publicado pela Apache Software Foundation em resposta ao LunaSec. A nova versão remove completamente a configuração vulnerável, impossibilitando a criação de condições para abuso.