
Log4J CVE-2021-44228 : Folha de Dicas de Mitigação
Atualização - 28-Dez-2021
CVE-2021-44832: Apache Log4j2 vulnerável a RCE via JDBC Appender quando o atacante controla a configuração.
Corrigido no Log4j 2.17.1 (Java 8), 2.12.4 (Java 7) e 2.3.2 (Java 6)
Atualização - 17-Dez-2021
Durante a noite, foi divulgado pela Apache que a versão 2.16 do Log4j também é vulnerável a um ataque de Negação de Serviço com o impacto sendo uma falha completa da aplicação, a gravidade disso é classificada como Alta (7.5). O CVE-2021-45105 foi emitido, e uma nova versão corrigida (2.17) foi publicada pela Apache, recomendando a atualização.
Histórico:
As discussões na internet estavam agitadas sobre uma vulnerabilidade de dia zero (que pode resultar em execução remota de código) na popular biblioteca de logging Log4J da Apache para Java. Esta vulnerabilidade específica – rastreada como CVE-2021-44228 com a pontuação máxima “crítica” de CVSS de 10 – reside na capacidade de lookup do Log4J, combinada com o JNDI (Interface de Nomes e Diretórios Java). Este problema é generalizado porque muitos desenvolvedores não sabiam que o Log4J era perigoso de usar com entrada não filtrada. O impacto mais significativo é que um atacante pode fazer com que uma string chegue ao logger, que quando processada pelo Log4J, executa código arbitrário. Os primeiros exemplos disso usaram o caminho ${jndi:ldap}, o que poderia levar ao carregamento de código arbitrário de uma URL remota. Este caminho é parcialmente mitigado pelo uso de runtimes Java mais recentes que bloqueiam o carregador de classes baseado em URL por padrão. Infelizmente, uma versão moderna do Java pode não ser suficiente para evitar a exploração, pois a própria aplicação pode expor classes que podem ser usadas para executar código arbitrário.
A arquitetura JNDI:

Mitigações para diferentes ambientes:
Atualização - 17-Dez-2021
Vulnerabilidade de Segurança CVE-2021-45105
Detalhes:
As versões do Apache Log4j2 de 2.0-alpha1 até 2.16.0 não protegiam contra recursão descontrolada de lookups autorreferentes. Quando a configuração de logging usa um Pattern Layout não padrão com um Context Lookup (por exemplo, $${ctx:loginId}), atacantes com controle sobre os dados de entrada do Thread Context Map (MDC) podem criar dados de entrada maliciosos que contêm um lookup recursivo, resultando em um StackOverflowError que encerrará o processo. Isso também é conhecido como um ataque DOS (Negação de Serviço).
Mitigação:
A partir da versão 2.17.0 (para Java 8), apenas strings de lookup na configuração são expandidas recursivamente; em qualquer outro uso, apenas o lookup de nível superior é resolvido, e quaisquer lookups aninhados não são resolvidos. Em versões anteriores, este problema pode ser mitigado garantindo que sua configuração de logging faça o seguinte:
No PatternLayout da configuração de logging, substitua Context Lookups como ${ctx:loginId} ou $${ctx:loginId} por padrões de Thread Context Map (%X, %mdc ou %MDC). Caso contrário, na configuração, remova referências a Context Lookups como ${ctx:loginId} ou $${ctx:loginId} onde elas se originam de fontes externas à aplicação, como cabeçalhos HTTP ou entrada do usuário.
Atualização - 13-Dez-2021
** Log4j (Versão 2.16.0 – 2021-12-13) tem duas funcionalidades melhoradas:**
---------------!!Altamente recomendado atualizar para a versão mais recente disponível, pois os message lookups estão desabilitados por padrão.!!------------
https://logging.apache.org/log4j/2.x/changes-report.html#a2.16.0
Desabilitar JNDI por padrão. Exige que log4j2.enableJndi seja definido como true para permitir JNDI.
Remover completamente o suporte para Message Lookups
Nova Atualização:
------------------CVE-2021-45046-----------------
Apache Log4j2 Thread Context Message Pattern e Context Lookup Pattern vulneráveis a um ataque de negação de serviço.
Mitigação:
Mitigação para Log4j 1.x: Log4j 1.x não é afetado por esta vulnerabilidade.
Mitigação para Log4j 2.x: Implemente uma das técnicas de mitigação abaixo.
Usuários de Java 8 (ou superior) devem atualizar para a versão 2.16.0. Usuários que necessitam de Java 7 devem atualizar para a versão 2.12.2 quando ela estiver disponível (trabalho em andamento, previsto para estar disponível em breve).
Caso contrário, remova a classe JndiLookup do classpath: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
Observe que apenas o arquivo JAR log4j-core é afetado por esta vulnerabilidade. Aplicações que usam apenas o arquivo JAR log4j-api sem o arquivo JAR log4j-core não são afetadas por esta vulnerabilidade.
------------------CVE-2021-44228-------------------
Mitigação
Mitigação para Log4j 1.x: Log4j 1.x não possui Lookups, então o risco é menor. Aplicações que usam Log4j 1.x são vulneráveis a este ataque apenas quando usam JNDI em sua configuração. Um CVE separado (CVE-2021-4104) foi registrado para esta vulnerabilidade. Para mitigar: audite sua configuração de logging para garantir que não tenha nenhum JMSAppender configurado.
Configurações do Log4j 1.x sem JMSAppender não são afetadas por esta vulnerabilidade.
Mitigação para Log4j 2.x: Implemente uma das técnicas de mitigação abaixo.
Usuários de Java 8 (ou superior) devem atualizar para a versão 2.16.0.
Usuários que necessitam de Java 7 devem atualizar para a versão 2.12.2 quando ela estiver disponível (trabalho em andamento, previsto para estar disponível em breve).
Caso contrário, remova a classe JndiLookup do classpath: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
Observe que apenas o arquivo JAR log4j-core é afetado por esta vulnerabilidade. Aplicações que usam apenas o arquivo JAR log4j-api sem o arquivo JAR log4j-core não são afetadas por esta vulnerabilidade.
1. Apache Log4j:
Nas versões >=2.10** e
Para versões >=2.0-beta9 e <=2.10.0
2. Correção do pom.xml:
3. Azure App Service (Windows e Linux):
4. Aplicações containerizadas:
5. Azure Functions:
6. Hotpatch para Apache Log4j
7. Como o Defender for Cloud encontra máquinas afetadas por vulnerabilidades do Log4j
8. Detecção em logs do Azure Sentinel e Azure WAF
9. Configuração do plug-in Maven para banir versões vulneráveis do log4j2 em builds futuros
1. Apache Log4j:
CVE-2021-44228: As funcionalidades JNDI do Apache Log4j2 não protegem contra LDAP controlado pelo atacante e outros endpoints relacionados ao JNDI.