Skip to main content

Encontre e corrija rapidamente a vulnerabilidade Log4Shell com a Snyk

Escrito por
Headshot of Ariel Ornstein

Ariel Ornstein

blog feature log4j vulnerability red

13 de dezembro de 2021

0 minutos de leitura

Nota do editor (28 de dezembro de 2021, às 19h35 GMT): A equipe do Log4j lançou uma nova atualização de segurança e identificou que a versão 2.17.0 era vulnerável à execução remota de código, conforme o CVE-2021-44832. Recomendamos atualizar para a versão mais recente, que, no momento, é a 2.17.1. Leia mais aqui.

Nota do editor (18 de dezembro de 2021, às 18h55 GMT): A situação do Log4j está mudando rapidamente, e atualizamos nossos blogs à medida que novas informações ficam disponíveis. Recomendamos atualizar para a versão 2.17.1 ou posterior. Essa versão inclui correções de segurança para duas vulnerabilidades de execução remota de código, corrigidas nas versões 2.15.0 (CVE-2021-44228) e 2.16.0 (CVE-2021-45046), além da vulnerabilidade de DoS mais recente, corrigida na versão 2.17.1 (CVE-2021-45105). Leia mais aqui.

Mesmo que você tenha feito de tudo para aproveitar um fim de semana tranquilo, é bem provável que esse plano tenha sido interrompido pelo menos uma vez pela nova vulnerabilidade de dia zero Log4Shell, divulgada na sexta-feira (10 de dezembro de 2021).

A nova vulnerabilidade foi encontrada na biblioteca Java de código aberto log4j-core, componente de um dos frameworks de logging Java mais populares: o Log4J. Ela recebeu o identificador CVE-2021-44228, foi classificada como Crítica, com pontuação CVSS 10, e apresenta um nível de exploração elevado, pois há evidências claras de que está sendo explorada na prática.

Todas as versões da 2.0-beta9 até a 2.14.1 foram afetadas pela nova vulnerabilidade, corrigida na versão mais recente (2.16.0), lançada no mesmo dia da divulgação.

A Snyk adicionou rapidamente a nova vulnerabilidade ao Banco de dados de vulnerabilidades Snyk Intel para que clientes, parceiros e a comunidade em geral possam usá-lo para analisar aplicações e contêineres JVM e aplicar uma correção urgente para essa vulnerabilidade usando o Snyk Open Source e o Snyk Container.

Como a Snyk pode ajudar você a encontrar e corrigir a Log4Shell

Uma das primeiras perguntas que a maioria das pessoas faz é: qual é o meu nível de exposição a essa vulnerabilidade?

Com a Snyk, você responde a essa pergunta: veja se está usando versões vulneráveis do pacote e onde elas estão sendo usadas. A Snyk também ajuda você a corrigi-las em todo o ciclo de vida de desenvolvimento de software (SDLC).

Vamos mostrar como usar a Snyk para descobrir se você está vulnerável à Log4Shell, durante a codificação, por meio das nossas integrações com SCM ou com alertas do nosso serviço de monitoramento contínuo. Também vamos mostrar como usar nossos serviços de relatórios e API para fazer isso em grande escala.

Comando da Snyk CLI para código não gerenciado e não declarado: snyk log4shell

A Snyk CLI tem um novo comando criado para uma única tarefa: encontrar vestígios da biblioteca Log4j afetada pela vulnerabilidade Log4Shell. O comando snyk log4shell testa seu projeto Java compilado e encontra vestígios da biblioteca vulnerável, mesmo que ela não esteja declarada nos arquivos de manifesto. Saiba mais sobre snyk log4shell e como usá-lo nos seus projetos.

Encontre a vulnerabilidade Log4Shell durante a codificação

Para encontrar a vulnerabilidade o mais rápido possível, desenvolvedores podem usar nossos plugins de IDE e nossa CLI, que são gratuitos para começar. Os resultados da análise incluem todas as vulnerabilidades encontradas pela Snyk e, para cada uma, mostram como ela foi introduzida na aplicação (como dependência direta ou indireta), além de instruções claras para corrigi-la.

O plugin do Snyk para IntelliJ sinaliza uma vulnerabilidade de execução arbitrária de código no Log4j e mostra instruções de correção para atualizar para a versão 2.15.0.
Captura de tela do plugin de IDE da Snyk para IntelliJ, com instruções no código sobre como corrigir a vulnerabilidade.

A Snyk CLI (use a versão mais recente, v1.792.0) exibe um aviso especial para dar mais visibilidade à vulnerabilidade, caso ela seja identificada. Para saber como instalar e atualizar a Snyk CLI, consulte nossa documentação:

Saída do terminal da CLI do Snyk mostrando duas vulnerabilidades no Log4j e instruções recomendadas de atualização e correção.
Identifique vulnerabilidades com a CLI da Snyk e receba instruções para corrigi-las.

Análise de log4j-core adicionado como JAR

Se você não usa um gerenciador de pacotes (por exemplo, Maven), a Snyk também pode detectar a vulnerabilidade em arquivos JAR. Para isso, basta executar o comando snyk test --scan-all-unmanaged para analisar todos os JARs da pasta atual (também funciona com o comando snyk monitor, para monitorar o projeto continuamente).

Terminal exibindo os resultados da verificação de dependências do Snyk, com duas vulnerabilidades no Log4j e recomendação de atualização da versão 2.14.1 para a 2.16.0.

Teste seus projetos em busca de vulnerabilidades do Log4j com as integrações de SCM da Snyk

Em poucos cliques, você pode importar todos os seus projetos compatíveis com a Snyk, analisá-los em busca de vulnerabilidades de código aberto e obter informações imediatas, incluindo quais vulnerabilidades existem, como foram introduzidas e como corrigi-las:

Interface do repositório mostrando o projeto arielorn-demos com repositórios selecionados, incluindo distributed-app, java-goof, goof, java-reachability-playground e
Relatório de vulnerabilidade do Apache Log4j indicando execução arbitrária de código, gravidade crítica, pontuação 1000 e detalhes da correção.

A Snyk fornece informações detalhadas sobre as vulnerabilidades identificadas, essenciais para entender como corrigi-las e priorizá-las conforme a urgência.

A Pontuação de prioridade da Snyk é calculada com base em diversos sinais, como a existência de uma exploração ativa, a disponibilidade de uma correção e até a popularidade da vulnerabilidade no Twitter. Essa pontuação ajuda a filtrar rapidamente a lista de vulnerabilidades e priorizar as correções. No caso da Log4Shell, a Pontuação de prioridade é, compreensivelmente, alta, como explicado ao passar o cursor sobre a pontuação.

A árvore de dependências do projeto ajuda você a entender exatamente como uma vulnerabilidade foi introduzida na aplicação, seja como dependência direta ou indireta:

Árvore de dependências filtrada para exibir vulnerabilidades, com destaque para org.apache.logging.log4j:log4j-core@2.3 entre as dependências Java vulneráveis.

Monitoramento contínuo para evitar novos casos de vulnerabilidades do Log4j

Se você já tinha importado seus projetos antes da divulgação da nova vulnerabilidade, eles foram testados automaticamente como parte do nosso ciclo diário de análise (a menos que a configuração padrão tenha sido alterada). Se as notificações estiverem ativadas, você já deve ter recebido um aviso informando se a vulnerabilidade foi encontrada em algum dos seus projetos.

PR/MR automática de correção para Log4Shell

Se a Snyk já monitorava seu repositório antes da divulgação da nova vulnerabilidade, ela já acionou automaticamente uma solicitação de pull/merge para atualizar log4j-core para uma versão não vulnerável.

Pull request do Snyk mostrando a atualização de uma dependência Maven que corrige a vulnerabilidade de execução remota de código do Log4j, da versão 2.3 para a 2.15.0.

Se este for um projeto importado recentemente ou você não tiver ativado as PRs de correção automática, poderá criar a PR de correção manualmente na página do projeto.

Painel de vulnerabilidades mostrando uma falha de execução arbitrária de código no Apache Log4j, com gravidade crítica e o botão “Corrigir esta vulnerabilidade” em destaque.

Detecte e corrija a Log4Shell em todos os serviços da sua empresa

Se você é cliente e tem acesso à nossa API e ao serviço de relatórios, essas ferramentas ajudam a identificar onde a dependência log4j-core está sendo usada em todos os seus projetos de código aberto monitorados.

Use os relatórios da Snyk para encontrar projetos que usam log4j-core

Você pode usar a lista de materiais de software (SBOM) da Snyk, disponível na aba de dependências dos relatórios da sua organização e do seu grupo, para pesquisar onde log4j-core é usado. Abra o filtro Dependências, comece a digitar o nome da dependência (log4j-core) e selecione-a para filtrar os resultados e exibir apenas esse pacote. Se nenhum resultado aparecer, isso indica que essa dependência não está nos projetos monitorados pela Snyk.

Aba de dependências do Snyk Reports filtrada por “log4j”, com org.apache.logging.log4j:log4j-core@2.3 selecionado
Uma captura de tela da busca por `log4j-core` na aba de dependências dos relatórios do Snyk.

Se encontrar a dependência, você poderá ver exatamente onde ela está sendo usada. Clique no link Projetos para ver a lista de todos os projetos que usam log4j-core como dependência. Depois, clique no projeto para consultar as instruções de correção. Se houver uma opção de atualização, você poderá abrir uma solicitação de pull/merge para corrigir o problema.

Painel de projetos dependentes de org.apache.logging.log4j:log4j-core@2.3, com dois projetos listados, suas fontes do GitHub e de CI/CLI e a quantidade de problemas.

Use a API da Snyk para encontrar projetos que usam log4j-core

Você também pode usar nossa API para descobrir onde a dependência log4j-core está sendo usada. O endpoint Dependências por organização lista todas as dependências utilizadas e indica onde elas são usadas. Há vários filtros para refinar os resultados, como linguagem (neste caso, Java é relevante), gravidade e outros. Se você tiver um grupo com várias organizações e quiser percorrê-las, use o endpoint Listar todas as organizações de um grupo.

Captura de código mostrando um registro JSON do Apache Log4j versão 2.3, com destaque para a quantidade de problemas críticos e os projetos Maven relacionados

A resposta inclui uma lista de todos os projetos que contêm o pacote relevante. A partir daí, você pode usar a interface para consultar os projetos e corrigir as vulnerabilidades ou obter instruções de correção por meio de outras APIs.

Conte com a ajuda da Snyk!

Começar a usar a Snyk é grátis, rápido e fácil. Junte-se a nós hoje e ajudaremos você a descobrir onde está usando o pacote vulnerável log4j-core (e muito mais) e a corrigi-lo com facilidade, para você voltar a aproveitar o fim de semana!

Comece a jogar Capture the Flag

Aprenda a resolver desafios de Capture the Flag assistindo à gravação sob demanda do nosso workshop virtual introdutório.