Pesquisadores de segurança divulgaram uma prova de conceito (PoC) de exploração para uma falha crítica de segurança recém-corrigida que afeta o Fortinet FortiSIEM e pode resultar na execução arbitrária de código.
A vulnerabilidade, catalogada como CVE-2026-106173 (sigla de Common Vulnerabilities and Exposures, ou Vulnerabilidades e Exposições Comuns, sistema de identificação de falhas de segurança), recebeu pontuação 9,4 no CVSS (Sistema Comum de Pontuação de Vulnerabilidades). Trata-se de uma falha crítica de travessia de diretórios (path traversal) que pode permitir a um atacante não autenticado executar código ou comandos não autorizados por meio de pacotes especialmente elaborados.
As correções para a falha foram lançadas na semana passada pela Fortinet nas seguintes versões:
- FortiSIEM 7.5.0 (atualizar para a versão 7.5.1 ou superior)
- FortiSIEM 7.6 (não afetado)
Segundo a Horizon3.ai, o problema envolve um atacante não autenticado que se conecta ao serviço gRPC (framework de chamadas remotas de procedimento) escutando na porta TCP 27918 (porta do protocolo TCP, de controle de transmissão) e explora a falha para sobrescrever um arquivo existente fora do diretório pretendido, transformando a capacidade de gravação arbitrária de arquivos em execução remota de código.
“O manipulador QueryResultReq do gRPC do FortiSIEM processa metadados não confiáveis sem validação adequada de caminho”, afirmou a Horizon3.ai. “Ao criar metadados que contêm tanto sequências de travessia de caminho (../) quanto injeção de byte nulo nas camadas de codificação HTTP/2 e HPACK do gRPC, um atacante pode gravar arquivos arbitrários no sistema de arquivos.”
Como funciona a falha
O problema decorre de uma construção insegura de caminho em uma função chamada SendQueryResult(), que repassa diretamente o parâmetro “query-id”, fornecido pelo usuário, sem validação suficiente.
Em outras palavras, um atacante pode usar essa falha para incluir sequências de travessia de diretórios, como “../”, e escapar do diretório original. No entanto, isso só permite que ele navegue até um diretório de sua escolha e escreva nele, mas não que escolha o nome do arquivo, pois o programa acrescenta automaticamente seu próprio nome, “result-<endereço IP de origem>-0-0-<id>.dat”, em que <id> é um valor de contador controlado pelo servidor.
É aí que entra uma segunda fraqueza: um byte nulo (“\0”) pode ser embutido no parâmetro “query-id”, fazendo com que o sistema operacional o interprete como um terminador de cadeia de caracteres (string) e descarte tudo o que vem depois. Isso, por sua vez, faz com que o sufixo acrescentado ao nome do arquivo seja ignorado quando o caminho é passado à função de abertura de arquivos.
Um atacante poderia explorar esse comportamento para criar um valor de “query-id” com “\0” posicionado logo após o nome real do arquivo a ser sobrescrito, ou seja, “../../../../../opt/charting/redishb.sh\0...”. O arquivo em questão é um script de shell que executa verificações de funcionamento no serviço Redis (banco de dados em memória) e é rodado a cada 60 segundos por uma tarefa agendada no cron (agendador de tarefas do Unix).
“A gravação cai exatamente no caminho que precedia o byte nulo”, afirmou Zach Hanley, engenheiro-chefe de ataques da Horizon3.ai. “Apontada para um arquivo existente, ela o sobrescreve no lugar, mantendo o dono e as permissões originais. Uma segunda variante usa duas requisições para criar um arquivo totalmente novo com um nome exato.”