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

Contrate hackers éticos para seu time

A Solyd Hunter encontra, valida e entrega os melhores profissionais de Cibersegurança, Red Team, AppSec e Pentest para sua empresa com garantia e agilidade. Clique aqui e contrate com segurança. Saiba mais...