Log4j Vulnerável: Como Detectar e Corrigir a Falha de Segurança Agora!

A falha de segurança no Log4j representa um dos riscos mais graves para a proteção de sistemas informatizados contemporâneos.

O registro de eventos (logging) é uma funcionalidade essencial em aplicações modernas, e a biblioteca Log4j se destaca como líder neste campo.

Esta biblioteca é amplamente utilizada em diversas aplicações, serviços e sistemas. Consequentemente, todas as aplicações que empregam o Log4j são afetadas por esta vulnerabilidade, descoberta no ano anterior.

Diante da crescente preocupação global com a segurança cibernética, organizações e indivíduos estão tomando medidas para salvaguardar suas aplicações, sistemas e dados.

A descoberta desta vulnerabilidade elevou ainda mais o nível de preocupação entre profissionais e empresas.

Portanto, identificar e corrigir a vulnerabilidade do Log4j é crucial para a proteção de dados, redes, reputação e a confiança do cliente.

Este artigo abordará o que é a vulnerabilidade do Log4j, juntamente com as etapas necessárias para detectá-la e corrigi-la.

Inicialmente, é fundamental entender o que é Log4j e por que ele é necessário.

O que é Log4j?

Log4j é uma ferramenta de código aberto escrita em Java, usada principalmente para armazenar, formatar e publicar logs gerados por aplicações e sistemas, além de monitorar erros. Os registros podem variar desde informações sobre páginas da web e dados do navegador até detalhes técnicos de um sistema onde o Log4j está operando.

Em vez de escrever código do zero, desenvolvedores podem integrar a biblioteca Log4j em suas aplicações.

O uso do Log4j permite aos desenvolvedores rastrear todos os eventos relacionados às suas aplicações com informações de registro precisas. Isso os auxilia no monitoramento de aplicações, na identificação de problemas de forma oportuna e na correção de falhas antes que se transformem em problemas maiores de desempenho e/ou segurança.

Esta biblioteca baseada em Java foi criada por Ceki Gülcü e lançada em 2001 sob a licença Apache 2.0. Utiliza os serviços de nomeação Java e a interface de diretório (JNDI) para permitir que aplicações interajam com outras aplicações, como LDAP, DNS, CORBA, etc., obtendo funcionalidades de diretório e nomeação para aplicações baseadas em Java. Log4j possui três componentes principais para realizar suas funções:

  • Loggers: responsáveis pela captura dos registros de log.
  • Layouts: encarregados da formatação dos registros em diferentes estilos.
  • Appenders: encarregados da publicação dos registros em diferentes destinos.

Log4j é uma das bibliotecas de log mais populares da internet, utilizada por organizações de diversos setores e países. Esta biblioteca de registro foi integrada em várias aplicações, incluindo serviços de nuvem de grandes empresas como Google, Microsoft, Apple, Cloudflare e Twitter.

A Apache Software Foundation, desenvolvedora do Log4j, também desenvolveu o Log4j 2, uma atualização para resolver problemas encontrados em versões anteriores. Contudo, no ano passado, foi descoberta uma vulnerabilidade no Log4j que, se não for tratada, pode permitir que invasores penetrem em aplicações e sistemas, roubem dados, infectem redes e executem outras atividades maliciosas.

Vamos aprofundar nosso entendimento.

O que é Log4Shell – A vulnerabilidade do Log4j?

Log4Shell é uma vulnerabilidade crítica de segurança cibernética na biblioteca Log4j, que afeta o funcionamento essencial da biblioteca. Permite que um invasor assuma o controle de um dispositivo ou aplicação conectada à internet, executando código de forma remota. Uma vez bem-sucedido, o invasor pode:

  • Executar qualquer código no dispositivo ou sistema.
  • Acessar toda a rede e os dados.
  • Modificar ou criptografar qualquer arquivo na aplicação ou dispositivo afetado.

Esta vulnerabilidade foi reportada pela primeira vez em 24 de novembro de 2021, por Chen Zhaojun, pesquisador de segurança da Alibaba. A vulnerabilidade afetou seus servidores Minecraft, descoberta pela equipe de segurança em nuvem do Alibaba em 9 de dezembro.

O NIST publicou esta vulnerabilidade no National Vulnerability Database, nomeando-a CVE-2021-44228. A Apache Software Foundation classificou a vulnerabilidade com gravidade 10 no CVSS. Esta classificação é extremamente rara e grave, pois a vulnerabilidade tem o potencial de ser explorada de forma fácil e ampla, causando danos massivos a organizações e indivíduos.

Em resposta, o Apache lançou um patch para esta vulnerabilidade. No entanto, algumas áreas permaneceram sem solução, levando a outras vulnerabilidades:

  • CVE-2021-45046, que facilitou ataques de negação de serviço (DoS) por meio de consultas JNDI.
  • CVE-2021-45105, que permitiu que hackers controlassem as informações do Thread Context Map e causassem ataques DoS interpretando uma string manipulada.
  • CVE-2021-44832, que afeta todas as versões do Log4j 2 por meio de injeção remota de código (RCE).

Como o Log4Shell funciona?

Para compreender a gravidade e o potencial destrutivo do Log4Shell, é importante entender como esta vulnerabilidade do Log4j funciona.

A vulnerabilidade do Log4Shell permite que um invasor injete remotamente qualquer código malicioso em uma rede, obtendo controle total sobre ela.

Esta sequência de ataque cibernético começa com uma biblioteca de log, como o Log4j, coletando e armazenando informações de log. Sem uma biblioteca de registro, todos os dados do servidor são arquivados imediatamente após a coleta.

No entanto, se houver necessidade de analisar esses dados ou realizar ações específicas com base em informações de log específicas, uma biblioteca de log é necessária para analisá-los antes do arquivamento.

Devido à vulnerabilidade do Log4j, qualquer sistema ou aplicação que o utilize torna-se suscetível a ataques cibernéticos. A biblioteca de log executa códigos com base na entrada. Um hacker pode forçar a biblioteca de logs a executar códigos maliciosos, já que a vulnerabilidade permite que eles manipulem a entrada.

Enquanto isso, vários processos ocorrem em segundo plano. Quando o Log4j recebe uma string construída especificamente, ele invoca um servidor LDP e baixa este código hospedado em seu diretório para execução. Desta forma, os invasores podem criar um servidor LDAP para armazenar código malicioso que lhes permita controlar qualquer servidor onde este código seja executado. Eles então enviam uma string direcionando seu código malicioso para uma aplicação ou sistema e assumem o controle total.

Assim, a vulnerabilidade do Log4j pode ser explorada da seguinte maneira:

  • Um invasor encontra um servidor com uma versão vulnerável do Log4j.
  • Ele envia uma solicitação para o servidor com um link para o servidor LDAP malicioso.
  • O servidor, em vez de verificar a solicitação, conecta-se diretamente a este servidor LDAP.
  • Os invasores agora enviam uma resposta do servidor LDAP contendo código malicioso. Devido à vulnerabilidade do Log4j, que permite receber o código e executá-lo sem verificação, o hacker pode explorar esta fraqueza para invadir o servidor e explorar sistemas, redes e dispositivos conectados.

Como a vulnerabilidade do Log4j pode prejudicar os usuários?

A vulnerabilidade do Log4j é preocupante devido à sua ampla utilização em diversas aplicações e sistemas de software.

Como o registro é um recurso fundamental em muitas aplicações e o Log4j é uma solução líder na área, ele é encontrado em diversos sistemas de software.

Alguns dos serviços e aplicações populares que usam o Log4j incluem Minecraft, AWS, iCloud, Microsoft, Twitter, roteadores de internet, ferramentas de desenvolvimento de software, ferramentas de segurança, entre outros. Isso significa que os invasores podem atingir um grande número de aplicações, serviços e sistemas de usuários domésticos, desenvolvedores de código, provedores de serviços e outros profissionais.

Além disso, a vulnerabilidade do Log4j é extremamente fácil de ser explorada por um invasor. O processo geral não requer conjuntos de habilidades avançadas, permitindo que mesmo indivíduos com conhecimento básico realizem um ataque. É por isso que o número de ataques que exploram esta vulnerabilidade está aumentando.

O impacto da vulnerabilidade Log4j inclui:

  • Ataques DoS
  • Ataques à cadeia de suprimentos
  • Mineração de criptomoedas
  • Injeções de malware, como ransomware e trojans
  • Injeção de código arbitrário
  • Execução remota de código

E muito mais.

Como resultado desses ataques, aplicações, sistemas e dispositivos podem ser perdidos, e os dados podem ser comprometidos, sendo vendidos, manipulados ou expostos ao mundo exterior. Isso pode prejudicar empresas em termos de privacidade de dados de clientes, confiança, segredos organizacionais e até mesmo suas vendas e receitas, sem mencionar os riscos de conformidade.

De acordo com um relatório, mais de 40% das redes corporativas globais sofreram ataques devido a esta vulnerabilidade.

Portanto, mesmo que não se use nenhuma versão vulnerável do Log4j diretamente, integrações de terceiros podem estar usando-a, tornando as aplicações vulneráveis a ataques.

É crucial notar que todas as versões do Log4j anteriores à 2.17.0 são afetadas. Portanto, é essencial atualizar o registrador se ele estiver em uso. Além disso, fornecedores conhecidos que são afetados por esta vulnerabilidade incluem Adobe, AWS, IBM, Cisco, VMware, Okta e Fortinet. Se você usa algum desses fornecedores, monitore suas aplicações continuamente e use sistemas de segurança para corrigir problemas assim que eles surgirem.

Como detectar programas afetados pelo Log4j e corrigir os problemas

A vulnerabilidade do Log4Shell possui pontuação 10 no CVSS. Portanto, nem todos os problemas no Log4j foram corrigidos. No entanto, é possível que você ou seu fornecedor terceirizado estejam usando o Log4j em sua aplicação.

Portanto, se você deseja proteger seus dados, sistemas e rede, certifique-se de seguir algumas etapas de correção.

#1. Atualize sua versão do Log4j

Atualizar sua versão atual do Log4j para a versão 2.17.1 é a técnica de correção mais eficaz para proteger dispositivos e aplicações contra ataques resultantes da vulnerabilidade do Log4j.

O Log4Shell é um ataque de dia zero que pode afetar potencialmente o ecossistema de software. O Apache corrigiu algumas das vulnerabilidades em versões recentes. No entanto, se um sistema foi comprometido antes da atualização, ele ainda está em risco.

Portanto, é crucial não apenas atualizar a versão, mas também iniciar imediatamente procedimentos de resposta a incidentes para garantir a ausência de vulnerabilidades e mitigar os ataques. Também é essencial revisar todos os logs do servidor para identificar indicadores de comprometimento (IOC) e monitorar continuamente sistemas e redes.

#2. Use os firewalls e sistemas de segurança mais recentes

Firewalls como o Web Application Firewall (WAF) e firewalls de última geração podem ajudar a proteger o perímetro da rede contra invasores, inspecionando pacotes de dados de entrada e saída e bloqueando os suspeitos. Portanto, use os firewalls mais recentes em sua rede e defina regras de saída rigorosas em seus servidores para ajudar a evitar ataques associados à vulnerabilidade do Log4j.

Embora os invasores possam contornar os firewalls, eles ainda fornecem um certo grau de proteção, bloqueando as solicitações de um invasor.

Além disso, atualize todos os seus sistemas de segurança, como sistemas de detecção de intrusão (IDS), sistemas de prevenção de intrusão (IPS), etc., com as assinaturas e regras mais recentes. Esses sistemas ajudarão a bloquear ou filtrar o tráfego RMI e LDAP para que não se conectem a servidores LDAP maliciosos.

#3. Implementar MFA

Configurar a autenticação multifator (MFA) em aplicações e sistemas melhorará a segurança contra invasores. Ela fornecerá uma segunda camada de segurança, mesmo que um invasor consiga quebrar a primeira camada. Isso pode ser feito através de biometria (impressões digitais, digitalização de íris, etc.), definindo uma pergunta de segurança ou ativando um PIN de segurança.

O uso do MFA aumentará a dificuldade e o tempo para invasores realizarem um ataque completo, além de fornecer informações sobre o incidente imediatamente, permitindo que as medidas de correção necessárias sejam tomadas.

Além disso, políticas de VPN rígidas devem ser aplicadas para reduzir violações de dados. Isso permitirá que os usuários acessem sistemas com segurança de qualquer lugar, sem medo de invasores.

#4. Alterar propriedades do sistema

Caso não seja possível atualizar para a versão mais recente da biblioteca Log4j, as propriedades do sistema Java devem ser alteradas imediatamente se uma versão entre Log4j 2.10 e Log4j 2.14.1 estiver em uso.

Elas devem ser configuradas para evitar as consultas que invasores usam para detectar as vulnerabilidades e, em seguida, encontrar maneiras de explorá-las.

#5. Remover JNDI

A raiz desta vulnerabilidade crítica de segurança está no seu projeto. O plugin JNDI Lookup possui uma falha de projeto que permite que invasores realizem ataques.

O JNDI é usado para executar código com base em dados de entrada em seu log, que qualquer pessoa pode manipular facilmente, pois o logger aceita qualquer solicitação sem verificação.

Pesquisadores de segurança descobriram que este plugin sempre permitiu dados não analisados desde seu lançamento em 2013, enviando-os para a biblioteca Log4j.

Portanto, a vulnerabilidade do Log4j é propensa à exploração através de uma simples injeção de string. Uma vez que um invasor a injete, o logger aceitará a operação solicitada na string e a executará instantaneamente, sem verificação.

Portanto, para proteger seus sistemas e aplicações, a classe JndiLookup deve ser desabilitada. Isso evitará que o registrador execute ações com base nos dados de log.

De fato, a consulta JNDI já está desabilitada por padrão no Log4j 2.16.0, em uma tentativa de proteger aplicações e sistemas.

Portanto, se uma versão do Log4j inferior a 2.16.0 estiver em uso, é crucial desabilitar o JNDI Lookup.

#6. Fale com seus fornecedores

Mesmo que os firewalls e sistemas de segurança estejam atualizados, a versão do Log4j seja a mais recente, e o JNDI Lookup esteja desabilitado, é importante não relaxar.

Embora uma versão vulnerável do Log4j não seja usada diretamente, fornecedores terceirizados podem estar usando-a. Assim, a invasão da aplicação ou sistema pode ser devido a um problema em uma integração de terceiros.

Portanto, entre em contato com os fornecedores e certifique-se de que eles também atualizaram o Log4j para a versão mais recente e implementaram as demais práticas de segurança discutidas.

#7. Use um verificador de vulnerabilidades Log4j

Existem várias ferramentas de verificação de vulnerabilidades do Log4j disponíveis no mercado, facilitando a detecção de vulnerabilidades do Log4j em sistemas e aplicações.

Ao procurar por essas ferramentas, verifique suas taxas de precisão, pois muitas delas geram falsos positivos. Além disso, encontre uma ferramenta que atenda às necessidades específicas, que possa se concentrar em identificar a vulnerabilidade, relatar a exposição e solucionar a vulnerabilidade.

Portanto, se o foco for a detecção, encontre um verificador de vulnerabilidades que possa identificar o problema ou use um que possa detectar e corrigir o problema.

Algumas das melhores ferramentas de verificação do Log4j incluem:

  • Microsoft 365 Defender: a Microsoft oferece uma variedade de soluções e ferramentas de segurança para ajudar a detectar e impedir explorações do Log4j em sua rede, permitindo identificar tentativas de execução e exploração remota de código, protegendo contra as vulnerabilidades do Log4j em dispositivos Windows e Linux.
  • Amazon Inspector e AWS: a Amazon criou uma ferramenta de varredura para encontrar a vulnerabilidade do Log4j em instâncias do Amazon EC2 e Amazon ECR.
  • CloudStrike Archive Scan Tool (CAST): a CloudStrike também criou uma excelente ferramenta de varredura para detectar a vulnerabilidade do Log4j, ajudando a corrigir problemas antes que os invasores possam explorá-la.
  • Detecção do Google Cloud Logging: a solução de detecção de log em nuvem do Google permite detectar explorações do Log4j usando o Logs Explorer. Nela, é possível criar uma consulta de log e verificar possíveis sequências de exploração.
  • O Google também criou o log4jscanner, um scanner de sistema de arquivos de código aberto para detectar a vulnerabilidade do Log4j.
  • BurpSuite Log4j Scanner: este é um plugin de segurança para profissionais e empresas, projetado para ajudá-los a detectar a vulnerabilidade do Log4j.
  • Testador de Vulnerabilidade Huntress Log4Shell: esta ferramenta gera um identificador único e aleatório que pode ser usado ao testar os campos de entrada. Ao encontrar uma vulnerabilidade no aplicativo ou campo de entrada, o servidor LDAP seguro encerrará a conexão maliciosa instantaneamente, mantendo o sistema protegido.
  • WhiteSource Log4j Detect: a WhiteSource criou uma ferramenta CLI gratuita, WhiteSource Log4j Detect, hospedada no GitHub, para auxiliar na detecção e correção de vulnerabilidades do Log4j – CVE-2021-445046 e CVE-2021-44228.
  • Ferramentas de varredura de código aberto JFrog para Log4j: a JFrog criou várias soluções e ferramentas de código aberto para encontrar vulnerabilidades do Log4j em binários e códigos-fonte.

Conclusão

A vulnerabilidade do Log4j é um problema de segurança crítico. Dada a ampla utilização desta biblioteca de logs em diversas aplicações e sistemas, ela se espalhou, permitindo que invasores explorem uma vasta gama de sistemas e aplicações.

Portanto, para proteger seus sistemas e aplicações contra esta vulnerabilidade, certifique-se de atualizar a biblioteca Log4j para a versão mais recente e implementar as melhores práticas de segurança discutidas acima.