Log4Shell—Identificador de vulnerabilidade e exposição comum (CVE), CVE-2021-44228—é uma vulnerabilidade de execução remota de código (RCE) presente em algumas versões do Log4J. A falha afeta o Apache Log4J 2, versões 2,14,1 e anteriores. Log4J 2,15 e posterior, e todas as versões do Apache Log4J 1, não são afetadas.
O Log4Shell surge de como versões mais antigas do Log4J 2 lidam com pesquisas de Java Naming e Interface de Diretório (JNDI). O JNDI é uma interface de programação de aplicativos (API) que os aplicativos Java usam para acessar recursos hospedados em servidores externos. Uma pesquisa JNDI é um comando que diz ao aplicativo para ir a um servidor e baixar um objeto específico, como um pedaço de dados ou um script. Versões mais antigas do Log4J 2 executam automaticamente qualquer código baixado dessa maneira.
Os utilizadores podem enviar procuras JNDI para versões vulneráveis do Log4J ao incluí-las em mensagens de registo.Fazer isso é simples. Por exemplo, em versões mais antigas do Minecraft Java Edition, que utilizam o Log4J para registrar mensagens de usuário, um usuário pode digitar a pesquisa JNDI na janela de chat público.
Hackers podem usar essa funcionalidade JNDI para executar códigos maliciosos arbitrários remotamente. Primeiro, o hacker configura um servidor que usa um protocolo comum, como Lightweight Directory Access Protocol (LDAP) para evitar chamar a atenção. Em seguida, eles armazenam uma carga maliciosa nesse servidor, como um arquivo de malware. Finalmente, enviam uma consulta JNDI para um programa, dizendo-lhe para acessar o servidor LDAP do atacante, baixar a carga e executar o código.