Skip to main content

Encontre e corrija rapidamente o exploit Log4Shell com a Snyk

Escrito por:
Ariel Ornstein

Ariel Ornstein

wordpress-sync/blog-feature-log4j-vulnerability-red

13 de dezembro de 2021

0 minutos de leitura

Observação do editor(28 de dezembro de 2021 às 19h35 GMT):A equipe do Log4j lançou uma nova atualização de segurança que constatou a vulnerabilidade da versão 2.17.0 à execução remota de código, identificada pela CVE-2021-44832. Recomendamos a atualização para a versão mais recente, que no momento é a 2.17.1. Saiba mais aqui.

Observação do editor(18 de dezembro de 2021 às 18h55 GMT):A situação do Log4j está evoluindo rapidamente e estamos atualizando nossos posts no blog conforme novas informações são disponibilizadas. Recomendamos a atualização para a versão 2.17.1 ou posterior. Essa versão contém correções de segurança para duas vulnerabilidades de execução remota de código, corrigidas na 2.15.0 (CVE-2021-44228) e na 2.16.0 (CVE-2021-45046), bem como a mais recente vulnerabilidade de DoS corrigida na 2.17.1 (CVE-2021-45105). Saiba mais aqui.

Se você já tinha um plano perfeito para curtir o fim de semana, é provável que a nova vulnerabilidade de dia zero Log4Shell divulgada na sexta-feira (10 de dezembro de 2021) tenha sido um balde de água fria.

Ela foi encontrada na biblioteca Java de código aberto log4j-core, componente de uma das estruturas Java de log mais populares, o Log4J. O código CVE-2021-44228, a categoria crítica e a pontuação CVSS de 10 foram atribuídos à vulnerabilidade. O nível do exploit é maduro, pois há evidências claras de que está sendo explorado em campo.

Todas as versões a partir da 2.0-beta9 até a 2.14.1 são afetadas pela nova vulnerabilidade, que foi 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 Snyk Intel Vulnerability Database para uso por clientes, parceiros e comunidade em geral na verificação de aplicativos e contêineres da JVM. Isso permiteaplicação de uma correção urgente dessa vulnerabilidade usando o Snyk Open Source e o Snyk Container.

Como a Snyk pode ajudar a encontrar e corrigir o Log4Shell

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

A Snyk ajuda a responder a essa pergunta mostrando se e onde você está usando as versões vulneráveis do pacote. Além disso, a Snyk ajuda a corrigi-las em todo o SDLC.

Vamos mostrar como usar a Snyk para descobrir se você está vulnerável ao Log4Shell no momento da codificação, através de nossas integrações de SCM ou com alertas do nosso serviço de monitoramento contínuo. Também vamos mostrar como usar nosso serviço 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 com uma finalidade específica: encontrar traços da biblioteca Log4j afetada pela vulnerabilidade Log4Shell. O comando snyk log4shell testa um projeto Java compilado e detecta traços da biblioteca vulnerável, mesmo que não esteja declarada nos arquivos de manifesto. Saiba mais sobre o snyk log4shell e como usá-lo nos projetos.

Localização da vulnerabilidade Log4Shell no momento da codificação

Para encontrar a vulnerabilidade o mais rápido possível, os desenvolvedores podem usar gratuitamente os plugins de IDE e a CLI da Snyk. Os resultados da verificação incluem todas as vulnerabilidades encontradas pela Snyk e, para cada uma delas, um detalhamento de como foram introduzidas no aplicativo (como dependência direta ou indireta) e instruções claras para a correção.

wordpress-sync/blog-log4shell-intellij
Uma captura de tela do plugin de IDE do IntelliJ da Snyk, com instruções em linha sobre como corrigir a vulnerabilidade.

A Snyk CLI (verifique se está usando a versão mais recente, v1.792.0) exibe uma mensagem de aviso especial para garantir maior destaque para a vulnerabilidade, se identificada (para obter instruções sobre como instalar e atualizar a Snyk CLI, consulte a documentação):

wordpress-sync/image-4-4
Identificação de vulnerabilidades e obtenção de instruções de correção na Snyk CLI.

Verificação de log4j-core adicionada como jar

Se você não usa um gerenciador de pacotes (como o Maven), a Snyk também pode detectar a vulnerabilidade em arquivos jar. Para fazer isso, basta executar o comando snyk test --scan-all-unmanaged para verificar todos os jars na pasta atual (funciona também com o comando snyk monitor para monitoramento contínuo do projeto).

wordpress-sync/image6-13

Teste de projetos para detectar vulnerabilidades do Log4j com as integrações de SCM da Snyk

Com poucos cliques, você pode importar todos os projetos compatíveis com a Snyk, testá-los para detectar vulnerabilidades de código aberto e obter insights imediatos sobre eles, incluindo quais vulnerabilidades estão presentes, como foram introduzidas e como corrigi-las:

wordpress-sync/blog-log4shell-import
wordpress-sync/blog-log4shell-vuln

A Snyk oferece muitas informações sobre as vulnerabilidades identificadas, o que é essencial para entender como corrigi-las e priorizá-las em função da necessidade de atenção imediata.

A pontuação de prioridade da Snyk é calculada com base em uma lista de vários sinais, como se a vulnerabilidade já tem um exploit em campo, se há uma correção disponível ou até mesmo se está em alta no Twitter. A pontuação pode ser usada para filtrar rapidamente a lista de vulnerabilidades e priorizar as correções. No caso do Log4Shell, a pontuação de prioridade é logicamente alta, conforme explicado ao passar o mouse sobre a pontuação.

A árvore de dependências do projeto ajuda a entender a forma exata como uma vulnerabilidade foi introduzida em um aplicativo, diretamente ou como dependência indireta:

wordpress-sync/blog-log4shell-dependency-tree

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

Se você já havia importado seus projetos antes da divulgação da nova vulnerabilidade, eles foram testados automaticamente como parte do nosso ciclo de teste diário (a menos que a configuração padrão tenha sido alterada). Se você habilitou as notificações, já deve ter recebido uma mensagem indicando se a vulnerabilidade foi encontrada em um dos seus projetos.

Solicitação de pull/merge para correção automática do Log4Shell

Se a Snyk estava monitorando o seu repositório antes da divulgação da nova vulnerabilidade, já acionamos automaticamente uma solicitação de pull/merge de correção que atualiza o log4j-core para uma versão não vulnerável.

wordpress-sync/blog-log4shell-fix-pr

No caso de uma nova importação ou se as solicitações automáticas de pull não foram habilitadas, você pode criar manualmente a solicitação de pull na página do projeto 

wordpress-sync/blog-log4shell-manual-fix

Detecção e correção do Log4Shell em todos os serviços da empresa

Se você é um cliente com acesso à nossa API e serviços de relatórios, essas são ótimas maneiras de ajudar a visualizar onde a dependência log4j-core está sendo usada em projetos de código aberto monitorados.

Como usar os relatórios da Snyk para encontrar projetos que usam o log4j-core

Você pode usar a lista de materiais da Snyk (disponível na guia de dependências dos relatórios por grupo e organização) para pesquisar onde o log4j-core é usado. Abra o filtro Dependências, comece a digitar o nome da dependência (log4j-core) e selecione-a para listar apenas os resultados desse pacote. Caso não apareçam, isso indica que você não tem essa dependência nos projetos monitorados com a Snyk.

wordpress-sync/blog-log4shell-search
Uma captura de tela da pesquisa do `log4j-core` na guia "Dependências" dos relatórios da Snyk.

Se encontrar a dependência, você poderá ver o local exato de uso dela. Clique no link Projetos para exibir uma lista de todos os projetos que usam o log4j-core como dependência. Clique no próprio projeto para encontrar instruções de correção. Se houver um caminho de atualização, você poderá abrir uma solicitação de pull/merge de correção.

wordpress-sync/blog-log4shell-projects

Como usar a API da Snyk para encontrar projetos que usam o log4j-core

Você também pode usar nossa API para descobrir onde usa a dependência log4j-core. O endpoint Dependências por organização permite listar todas as dependências em uso e saber onde são utilizadas. Há vários filtros, como linguagem (neste caso, Java é relevante), gravidade e outros, que você pode usar para restringir os resultados obtidos. Use o endpoint Listar todas as organizações em um grupo se tiver um grupo com várias organizações e quiser percorrer todas elas.

wordpress-sync/blog-log4shell-api

Como parte da resposta, você verá uma lista de todos os projetos que contêm o pacote relevante. Nela, é possível usar a interface para investigar projetos e corrigir vulnerabilidades ou obter instruções de correção por meio de outras APIs.

Deixe a Snyk ajudar você!

Dar os primeiros passos com a Snyk é grátis, rápido e fácil. Junte-se a nós agora mesmo para ajudarmos a descobrir onde usa o pacote vulnerável log4j-core (e muitos outros) e implementar as devidas correções. Ainda dá tempo de curtir o fim de semana!

wordpress-sync/blog-feature-log4j-vulnerability-red

Quer experimentar?

500 devs to 1 security professional is the reality of today. The security pro’s role must transform into an aware, knowledgeable, supportive partner capable of empowering developers to make security decisions.