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
Conheça a Solyd One, e tenha acesso a todos os cursos de segurança ofensiva da Solyd, todas as certificações práticas, incluindo a SYCP, 2 CTFs anuais com prêmios de até 30 mil reais, dezenas de laboratórios realísticos, suporte, comunidade e muito mais. Saiba mais...