Pular para o conteúdo
>_ITDITDPlataforma de Segurança Web

Incidentes e Vulnerabilidades

Log4Shell (CVE-2021-44228) — a noite em que o mundo temeu um bug que nem conseguia confirmar ter

Em dezembro de 2021, o Log4j teve um RCE com CVSS 10.0. O verdadeiro terror: ser afetado por uma biblioteca que você nem sabia que usava (dependências transitivas). Como o registro de logs virou vetor de ataque, e as lições: SBOM, monitoramento por máquina, patch rápido.

Publicado 2026-06-07 Atualizado 2026-06-07 4 min de leitura

Revisitando um evento marcante — não para reproduzir o ataque, mas pelas lições que ainda valem para suas operações.

2021/12
divulgado
10.0
CVSS (pior classe)
transitiva
o cerne do medo
vários
CVEs de continuação

O que aconteceu — um caminho passivo vira vetor de ataque

O Log4j cuidava da tarefa mundana de escrever logs e estava praticamente em toda parte no mundo Java. A falha: a biblioteca interpretava certo padrão dentro de strings registradas como algo a "resolver buscando externamente" e acabava executando código especificado externamente.

Então um invasor que conseguisse colocar uma string maliciosa em "algum lugar que fosse registrado em log" (um nome de usuário, um cabeçalho) podia chegar à execução de código. O choque de um ato passivo como registrar logs virar um caminho de ataque foi profundo.

Por que "estamos afetados?" era tão difícil de responder

A maioria dos apps nunca instalou o Log4j diretamente. Um framework ou SDK o puxava — uma dependência transitiva: uma dependência de uma dependência de uma dependência. Sem a sua "lista de materiais", você nem conseguia dizer se estava afetado.

Seu app (uma linha no package.json)
└─▶
framework / SDK (dependência direta)
└─▶
um componente de logging (dependência de uma dependência)
└─▶
Log4j ← a vulnerabilidade (nunca instalada diretamente)
Você adicionou uma linha, mas dezenas de 'dependências de dependências' ficam por baixo dela. O Log4j se escondia ali.

A parte mais assustadora era 'você não consegue dizer'

Quando você "não consegue dizer se usa", você nem consegue priorizar a resposta. Ter ou não uma lista de materiais (SBOM) decidia como aquela noite transcorria.

Linha do tempo

  1. 2021-12-09–10

    A falha se torna amplamente conhecida; o mundo corre para checar "estamos afetados?".
  2. logo depois

    Patches de emergência e mitigações paliativas são implantados; tentativas de exploração disparam.
  3. depois disso

    Vários CVEs de continuação (correções da correção) são publicados — "corrigido uma vez" não era o fim.

Lições que ainda valem

1

Tenha um SBOM (lista de materiais)

Torne visível o que seu app usa internamente — npm ls / lockfiles / ferramentas de SBOM mostram o que realmente roda. Olhar só "o que você instalou diretamente" não basta.

2

Monitore dependências por máquina

No instante em que um CVE sai, saiba automaticamente se ele se aplica (Dependabot / osv-scanner) — incluindo dependências transitivas. Patrulhas manuais sempre deixam passar.

3

Torne o patch rápido

Mantenha aquecido o músculo de "atualizar, verificar, publicar" para emergências. Veja como montar o monitoramento de dependências.

4

Acompanhe os CVEs de continuação

Depois do Log4Shell, surgiram correções da correção. Não pare em "corrigido uma vez" — acompanhe as continuações.

Leia em seguida

FAQ

QO que havia de 'novo' no medo do Log4Shell?
A

Ele expôs o perigo das dependências transitivas em escala global: estar vulnerável por uma biblioteca usada dentro de outra biblioteca, mesmo sem instalação direta. Sem conhecer seu SBOM, você nem conseguia dizer se estava afetado.

QPor que o registro de logs virou vetor de ataque?
A

O Log4j interpretava certo texto dentro de strings registradas como algo a 'resolver buscando externamente'. O invasor só precisava colocar uma string maliciosa em algum lugar que fosse registrado em log (um nome de usuário, um cabeçalho HTTP), transformando um caminho passivo de log em execução de código.

QComo evito repetir isso?
A

Três coisas: monitore dependências por máquina (Dependabot/osv-scanner), gere um SBOM para ver o que você realmente usa e mantenha um processo de atualização rápido o bastante para corrigir depressa — e acompanhe os CVEs de continuação (correções da correção).