Pular para o conteúdo
Bruno Alexandre Tecnologia, infraestrutura e desenvolvimento

Log4Shell: a falha de uma biblioteca que virou a maior crise de segurança da década

Em dezembro de 2021, uma falha de quatro linhas em uma biblioteca de logs tirou sistemas do ar no mundo inteiro, em escala de horas.

Bruno Alexandre 16/10/2026 4 leituras
Log4Shell: a falha de uma biblioteca que virou a maior crise de segurança da década
Em dezembro de 2021 o mundo acordou com uma falha de segurança em uma biblioteca de Java usada para registrar logs, chamada Log4j. A falha recebeu o identificador CVE-2021-44228 e o nome de Log4Shell, e foi explorada em uma velocidade difícil de acreditar: serviços públicos de vários países caíram em poucas horas, e o nome da biblioteca passou a ser matéria de jornal.

O que a falha fazia era simples de explicar. A biblioteca Log4j escreve mensagens de log, e uma das funções permitia que o texto da mensagem fosse interpretado como um comando. Quando alguém escrevia no log um texto como `${jndi:ldap://...}, a biblioteca tentava buscar um endereço remoto, executava o que lá viesse e apresentava o resultado como parte da mensagem. Na prática, isso dava ao atacante a execução de código no servidor, sem senha e sem qualquer interação do usuário.

O agravante era a ubiquidade. O Log4j não é um programa de log, é uma biblioteca, e ela estava dentro de centenas de milhares de aplicações, muitas vezes de forma indireta, como dependência de outra dependência. A maioria dos times nem sabia que tinha a biblioteca instalada. A correção exigia mexer na configuração ou atualizar a dependência, e a dependência estava em camadas que ninguém mapeava.

A segunda onda, a CVE-2021-45046, mostrou que a correção da primeira tinha sido incompleta. As empresas que atualizaram a biblioteca para a versão 2.15.0 acharam que estavam resolvidas, e découvriram que o problema persistia em alguns formatos de mensagem. A versão 2.16.0 resolveu de vez, e ainda assim muita gente ficou em 2.15.0 por semanas.

A lição que ficou foi que a dependência transitiva é uma responsabilidade. O inventário de pacotes que o seu sistema usa, com as versões, não é burocracia: é o que permite responder em minutos quando um aviso sai. E que a velocidade do explorador é o que define a gravidade real, porque uma falha crítica sem correção e sem travaille de inventário vira indisponibilidade em horas, não em semanas.

Leia também