Este repositório fornece conteúdo de engenharia de detecção pronto para produção para **CVE-2025-25257**, uma vulnerabilidade de injeção de SQL pré-autenticação no Fortinet FortiWeb Fabric Connector versões 7.0 a 7.6.x. A exploração bem-sucedida pode levar à execução remota de código sem qualquer autenticação prévia.
Este repositório fornece conteúdo de engenharia de detecção pronto para produção para a CVE-2025-25257, uma vulnerabilidade de injeção SQL sem autenticação no Fortinet FortiWeb Fabric Connector versões 7.0 a 7.6.x. A exploração bem-sucedida pode levar à execução remota de código sem qualquer autenticação prévia.
Este conteúdo destina-se apenas para uso defensivo. É voltado para equipes de Centro de Operações de Segurança (SOC), engenheiros de detecção e caçadores de ameaças. Nenhum código de exploração armado está incluído.
| Campo | Detalhe |
|---|---|
| CVE | CVE-2025-25257 |
| EDB-ID | 52473 |
| Produto | Fortinet FortiWeb |
| Versões Afetadas | 7.0.x a 7.6.x |
| Tipo de Vulnerabilidade | Injeção SQL sem autenticação levando a RCE |
| Vetor de Ataque | Endpoint da API HTTP (não autenticado) |
| Autenticação Necessária | Nenhuma |
| Pontuação CVSS | 9.8 (Crítica) |
| Patch Disponível | Sim, atualize para 7.6.1 ou posterior |
| Publicado | 2026-02-04 |
| Pesquisador | Milad Karimi (Ex3ptionaL) |
A CVE-2025-25257 afeta o endpoint da API Fabric Connector /api/fabric/device/status no FortiWeb. O cabeçalho Authorization é passado diretamente para uma consulta SQL sem sanitização. Um atacante não autenticado pode injetar sintaxe SQL no valor do token Bearer para manipular a consulta subjacente, contornar a autenticação e, em certas configurações, obter execução remota de código através de empilhamento de comandos baseados em SQL ou primitivas de escrita de arquivos.
A vulnerabilidade é explorável pela rede sem credenciais. É trivialmente detectável em logs de acesso HTTP se a coleta de logs estiver em vigor.
O atacante envia uma requisição HTTP GET manipulada para a API Fabric Connector. O token Bearer no cabeçalho Authorization contém SQL injetado. Exemplo de padrão:
Authorization: Bearer aaa' OR '1'='1
Isso faz com que a consulta SQL do backend seja avaliada como verdadeira, contornando a validação do token. Explorações adicionais podem envolver injeção baseada em UNION para ler dados ou consultas empilhadas para escrever arquivos ou executar comandos do SO, dependendo da configuração e dos privilégios do banco de dados.
O seguinte é documentado apenas para fins de validação de regras de detecção.
GET /api/fabric/device/status HTTP/1.1
Host: <fortiweb-ip>
Authorization: Bearer aaa' OR '1'='1
As regras de detecção neste repositório são ajustadas para identificar este e padrões de injeção semelhantes em logs HTTP e tráfego de rede.
| ID | Categoria | Método de Detecção | Fonte | Nível de Cobertura |
|---|---|---|---|---|
| D-01 | Exploração de Requisição Web | Padrão SQLi no cabeçalho Authorization | Logs Web/Proxy, WAF | Alto |
| D-02 | Exploração de Requisição Web | Requisições para /api/fabric/device/status sem token válido | Logs Web | Alto |
| D-03 | Anomalia de Execução de Processo | Processo shell gerado pelo processo do servidor web | EDR / Sysmon | Alto |
| D-04 | Anomalia de Execução de Processo | sh, bash, python filho de nginx ou httpd | EDR | Alto |
| D-05 | Criação Suspeita de Arquivo | Web shell escrito na raiz web do FortiWeb | EDR / Integridade de Arquivos | Médio |
| D-06 | Criação Suspeita de Arquivo | .php, .jsp, .py inesperados em diretórios web | Monitoramento de Arquivos | Médio |
| D-07 | Mecanismo de Persistência | Modificação de cron job pós-exploração | EDR / Auditd | Médio |
| D-08 | Mecanismo de Persistência | Nova conta de administrador criada via API pós-SQLi | API / Logs de Autenticação | Alto |
| D-09 | Atividade em Contêiner | Processo anormal no namespace do contêiner FortiWeb | Runtime de Contêiner | Médio |
| D-10 | Caça a Ameaças | Desvio de linha de base na taxa de chamadas da API Fabric Connector | SIEM / Analytics | Médio |
| D-11 | Caça a Ameaças | IPs de origem fazendo padrões repetidos de 200/403 para /api/fabric/ | Logs Web | Alto |
| D-12 | Alteração de Configuração | Mudanças nos arquivos de configuração do FortiWeb após requisição web | Integridade de Arquivos / EDR | Alto |
| D-13 | Alteração de Configuração | Escritas inesperadas em /data/ ou /etc/ no appliance | Auditd / EDR | Médio |
As regras YARA estão localizadas em rules/yara/.
cve_2025_25257_http.yar – Detecta padrões de exploração em arquivos de log HTTP e tráfego capturadocve_2025_25257_webshell.yar – Detecta web shells potencialmente deixados após exploraçãocve_2025_25257_payload.yar – Detecta artefatos brutos de payload em discoEscaneie logs de acesso HTTP:
yara -r rules/yara/cve_2025_25257_http.yar /var/log/fortiweb/
Escaneie a raiz web em busca de arquivos deixados:
yara -r rules/yara/cve_2025_25257_webshell.yar /var/www/html/
Escaneie PCAP capturado:
yara rules/yara/cve_2025_25257_http.yar capture.pcap
Execute todas as regras recursivamente em um diretório:
yara -r rules/yara/ /path/to/scan/
As consultas KQL estão localizadas em rules/kql/. Cada arquivo visa uma categoria de detecção específica.
| Arquivo | Descrição |
|---|---|
01_web_exploitation.kql | Padrões de injeção SQL no cabeçalho Authorization |
02_process_spawn.kql | Processos filhos anômalos do servidor web |
03_command_execution.kql | Cadeias suspeitas de execução de comandos |
04_file_creation.kql | Escritas inesperadas de arquivos em diretórios web |
05_persistence.kql | Indicadores de mecanismo de persistência |
06_config_modification.kql | Alteração de arquivos de configuração |
07_threat_hunting.kql | Consulta avançada de caça a ameaças |
As regras Sigma estão em rules/sigma/. Elas podem ser convertidas para qualquer formato de SIEM usando sigma-cli ou pySigma.
Converter para Splunk SPL:
sigma convert -t splunk rules/sigma/cve_2025_25257_sqli.yml
Converter para Elastic EQL:
sigma convert -t elasticsearch rules/sigma/cve_2025_25257_sqli.yml
Na CLI do appliance FortiWeb:
get system status | grep Version
Afetado: 7.0.x a 7.6.0
Corrigido: 7.6.1 e posteriores
Um proxy reverso Nginx básico simulando o endpoint vulnerável pode ser usado para testes de detecção. Nenhuma imagem real do FortiWeb é necessária para validação de detecção baseada em logs.
# Puxe o contêiner do laboratório de teste
docker run -d \
--name fortiweb-sim \
-p 8443:443 \
-v $(pwd)/src/lab/nginx.conf:/etc/nginx/nginx.conf:ro \
nginx:alpine
# Envie uma requisição de exploração simulada
curl -k -H "Authorization: Bearer aaa' OR '1'='1" \
https://localhost:8443/api/fabric/device/status
Isso gerará uma entrada de log de acesso correspondente aos padrões de detecção em D-01.
Após enviar a requisição de teste, verifique a saída do log simulado:
docker logs fortiweb-sim | grep "fabric/device/status"
Padrão de entrada de log esperado: