Falha no Nuclei é corrigida
6 de Janeiro de 2025

Uma vulnerabilidade agora corrigida no scanner de vulnerabilidades de código aberto Nuclei poderia potencialmente permitir que atacantes burlassem a verificação de assinatura enquanto inserem código malicioso em templates que são executados em sistemas locais.

Nuclei é um scanner de vulnerabilidades de código aberto popular criado pelo ProjectDiscovery, que scanneia sites em busca de vulnerabilidades e outras fragilidades.

O projeto utiliza um sistema de scanning baseado em templates de mais de 10.000 templates YAML que escaneiam sites em busca de vulnerabilidades conhecidas, má configurações, arquivos de configuração expostos, webshells e backdoors.

Os templates YAML também incluem um protocolo de código que pode ser usado para executar comandos ou scripts localmente em um dispositivo, o que amplia a funcionalidade de um template.

Cada template é "assinado" com um digest hash que o Nuclei usa para verificar se o template não foi modificado para incluir código malicioso.

Esse digest hash é adicionado ao final dos templates na forma de:

Uma nova vulnerabilidade no Nuclei rastreada como CVE-2024-43405 foi descoberta pelos pesquisadores da Wiz que burla a verificação de assinatura do Nuclei mesmo se um template for modificado para incluir código malicioso.

A falha é causada por uma verificação de assinatura baseada em regex do Go e como o parser de YAML lida com quebras de linha ao verificar a assinatura.

Quando verificando uma assinatura, a lógica de verificação do Go trata \r como parte da mesma linha.

No entanto, o parser de YAML interpreta isso como uma quebra de linha.

Esse desencontro permite que atacantes injetem conteúdo malicioso que burla a verificação, mas ainda é executado quando processado pelo parser de YAML.

Outro problema é como o Nuclei lida com múltiplas linhas # digest: signature, pois o processo verifica apenas a primeira ocorrência de # digest: em um template, ignorando quaisquer adicionais encontradas posteriormente no template.

Isso pode ser explorado adicionando payloads maliciosas "# digest:" adicionais após o digest válido inicial que contêm uma seção de "código" malicioso, que é então injetado e executado quando o template é usado.

"Armados com as percepções sobre interpretações discrepantes de novas linhas, criamos um template que explora a disparidade entre a implementação regex do Go e o parser de YAML", explica Guy Goldenberg, pesquisador da Wiz.

Usando \r como quebra de linha, podemos incluir uma segunda linha # digest: no template que evita o processo de verificação de assinatura mas é parseada e executada pelo interpretador de YAML.

A Wiz divulgou a falha de forma responsável ao ProjectDiscovery em 14 de agosto de 2024, e ela foi corrigida no Nuclei v3.3.2 em 4 de setembro.

Se você está usando versões antigas do Nuclei, é altamente recomendado que você atualize para a versão mais recente agora que os detalhes técnicos para esse bug foram divulgados publicamente.

Goldenberg também recomenda que o Nuclei seja usado em uma máquina virtual ou ambiente isolado para prevenir possíveis explorações de templates maliciosos.

Publicidade

Proteja sua empresa contra hackers através de um Pentest

Tenha acesso aos melhores hackers éticos do mercado através de um serviço personalizado, especializado e adaptado para o seu negócio. Qualidade, confiança e especialidade em segurança ofensiva de quem já protegeu centenas de empresas. Saiba mais...