> [!danger] CVSS 9.8 - Crítico
> Format string no daemon fgfmd permite execução remota de código sem autenticação.
> [!warning] CISA KEV - Exploração Ativa Confirmada
> Adicionada ao catálogo CISA KEV em 2024-10-09. Associada ao Volt Typhoon.
> [!success] Patch Disponível
> Atualizar para FortiOS 7.4.3+, 7.2.7+, 7.0.14+. Remover acesso FGFM como workaround.
# CVE-2024-23113 - Format String no FortiOS (fgfmd)
> CVSS: 9.8 · EPSS: 93% · Vendor: Fortinet · Patch: Sim · CISA KEV: Sim
## Resumo
**CVE-2024-23113** é uma vulnerabilidade crítica de format string no daemon `fgfmd` do [[_fortinet|Fortinet]] FortiOS, FortiPAM, FortiProxy e FortiWeb. A falha permite que um atacante remoto não autenticado execute código arbitrário ou comandos através de requisições especialmente elaboradas que manipulam a format string do processo.
A vulnerabilidade foi divulgada pelo [[_fortinet|Fortinet]] FortiGuard Labs em 8 de fevereiro de 2024 e adicionada ao catálogo CISA KEV em 9 de outubro de 2024 após confirmação de exploração ativa. Múltiplas provas de conceito foram públicadas no GitHub.
**Pontuação de risco:**
- CVSS v3.1: **9.8** (Crítico)
- EPSS: **93%** de probabilidade de exploração nos próximos 30 dias
- CISA KEV: adicionado em 2024-10-09
- Exploit público: múltiplos PoCs no GitHub
## Cadeia de Exploração
```mermaid
graph TB
ATK[Atacante] -->|Requisição com format string maliciosa| FGFMD[Daemon fgfmd FortiOS]
FGFMD -->|Format string não controlada CWE-134| MEM[Leitura/Escrita de Memória]
MEM -->|Execução de código arbitrário| RCE[RCE como fgfmd]
RCE -->|Implantação de backdoor| BACK[Persistência no FortiOS]
BACK -->|Pivô para rede interna| NET[Rede Corporativa]
```
## Detalhes Técnicos
A vulnerabilidade é classificada como "Use of Externally-Controlled Format String" (CWE-134) no daemon `fgfmd`, que é o daemon de gerenciamento FortiGate-to-FortiManager presente em dispositivos FortiOS.
O mecanismo de exploração:
1. O daemon `fgfmd` aceita conexões na porta de gerenciamento
2. Requisições especialmente elaboradas exploram a format string descontrolada
3. O atacante pode ler/escrever memória arbitrária e executar código
4. A exploração não requer autenticação prévia
A complexidade técnica da exploração é considerada alta, porém a disponibilidade de PoCs públicos reduz a barreira de entrada para atacantes.
## Exploração
**Status atual:** Exploração ativa confirmada - CISA adicionou ao KEV em outubro de 2024.
A [[_intel/sources|CISA]] confirmou exploração ativa ao adicionar a CVE ao catálogo KEV. Grupos de ameaça sofisticados, incluindo possível associação com operações patrocinadas por estados, foram reportados explorando vulnerabilidades no FortiOS.
**Grupos de ameaça utilizando:**
- [[g1017-volt-typhoon|Volt Typhoon]] - grupo APT chinês com histórico de exploração de appliances Fortinet
**TTPs relacionadas:**
- [[t1190-exploit-public-facing-application|T1190 - Exploit Public-Facing Application]] - exploração do daemon fgfmd exposto
- [[t1059-command-scripting-interpreter|T1059 - Command and Scripting Interpreter]] - execução de comandos via format string
- [[t1203-exploitation-client-execution|T1203 - Exploitation for Client Execution]] - exploração da vulnerabilidade de format string
## Impacto
Um atacante que explore esta vulnerabilidade pode:
- **Execução de código remoto:** executar código arbitrário no contexto do daemon fgfmd
- **Comprometimento do dispositivo:** controle total do firewall/proxy Fortinet
- **Acesso à rede:** uso do dispositivo comprometido como pivô para a rede interna
- **Persistência:** implantação de backdoors no dispositivo Fortinet
**Produtos Afetados:**
| Vendor | Produto | Versão Afetada | Versão com Fix |
|--------|---------|----------------|----------------|
| Fortinet | FortiOS 7.4 | 7.4.0 - 7.4.2 | 7.4.3+ |
| Fortinet | FortiOS 7.2 | 7.2.0 - 7.2.6 | 7.2.7+ |
| Fortinet | FortiOS 7.0 | 7.0.0 - 7.0.13 | 7.0.14+ |
| Fortinet | FortiPAM | 1.0-1.2 | Atualizar |
| Fortinet | FortiProxy | 7.4.0-7.4.2 | 7.4.3+ |
| Fortinet | FortiWeb | 7.4.0-7.4.2 | 7.4.3+ |
## Mitigação
**Patch oficial:**
- Advisory: [FortiGuard Labs FG-IR-24-029](https://www.fortiguard.com/psirt/FG-IR-24-029)
- Atualizar para as versões mais recentes do FortiOS imediatamente
- Data de divulgação: 2024-02-08
**Mitigação temporária:**
- Remover o acesso ao FGFM de cada interface como workaround temporário
- Restringir acesso à porta de gerenciamento (FGFM) por ACL
- Monitorar conexões de entrada no daemon fgfmd para comportamento anômalo
- Implementar IDS/IPS para detectar tentativas de exploração de format string
## Relevância LATAM/Brasil
O [[_fortinet|Fortinet]] FortiOS é uma das plataformas de firewall mais utilizadas no Brasil, com presença significativa nos setores [[financial]], [[government]], [[telecommunications|telecomúnicações]] e [[energy]]. A Fortinet possui uma das maiores bases instaladas de segurança de rede na América Latina. O envolvimento de grupos APT como [[g1017-volt-typhoon|Volt Typhoon]] na exploração de dispositivos Fortinet adiciona uma dimensão geopolítica relevante, especialmente considerando a infraestrutura crítica brasileira.
## IoCs
Indicadores de comprometimento públicos:
- Conexões anômalas na porta FGFM do FortiOS
- Processos não autorizados executando no contexto do daemon fgfmd
- Logs de crash do daemon fgfmd indicando format string exploitation
- Configurações de dispositivo alteradas sem autorização
Fonte: [FortiGuard Labs Advisory](https://www.fortiguard.com/psirt/FG-IR-24-029)
## Referências
- [NVD - CVE-2024-23113](https://nvd.nist.gov/vuln/detail/CVE-2024-23113)
- [FortiGuard Labs - FG-IR-24-029](https://www.fortiguard.com/psirt/FG-IR-24-029)
- [watchTowr - FortiGate CVE-2024-23113 Analysis](https://labs.watchtowr.com/fortinet-fortigate-CVE-2024-23113-a-super-complex-vulnerability-in-a-super-secure-appliance-in-2024/)
- [CISA KEV Catalog](https://www.cisa.gov/known-exploited-vulnerabilities-catalog)
- [Cybersecurity Dive - Fortinet CVE Exploited](https://www.cybersecuritydive.com/news/critical-cve-fortinet-exploited/729736/)
## Notas Relacionadas
**CVEs relacionados:** [[cve-2024-21762|CVE-2024-21762]] · [[cve-2024-47575|CVE-2024-47575]]
**Atores explorando:** [[g1017-volt-typhoon|Volt Typhoon]]
**TTPs relacionadas:** [[t1190-exploit-public-facing-application|T1190 - Exploit Public-Facing Application]] · [[t1059-command-scripting-interpreter|T1059 - Command and Scripting Interpreter]] · [[t1203-exploitation-client-execution|T1203 - Exploitation for Client Execution]]
**Setores em risco:** [[financial]] · [[government]] · [[telecommunications|telecomúnicações]] · [[energy]]
---
## Detecção e Resposta
> [!warning] Aviso sobre as regras abaixo
> As regras e consultas a seguir são **exemplos e pontos de partida**. Devem ser revisadas,
> testadas e adaptadas ao seu ambiente específico antes de serem implantadas em produção.
> Falsos positivos e negativos são esperados - tuning contínuo é necessário. Valide sempre
> contra sua telemetria antes de ativar alertas.
### Splunk SPL
Detecção de crashes/reinicializações anômalas do daemon fgfmd - indicador de tentativa de exploração de format string:
```spl
sourcetype=fgt_event ("fgfmd" OR "FGFM")
AND (restart OR crash OR killed OR signal)
| stats count by host, event_type
| where count > 3
```
Detecção de dispositivos não registrados tentando autenticação - padrão de exploração pré-auth:
```spl
sourcetype=fgt_event (msg="*unregistered*" OR msg="*unauthorized*")
AND (device OR gateway)
| stats count, values(src_ip) by dest_ip, operation
| where count > 10
```
Detecção de exfiltração de dados pós-comprometimento (baseado em análise Darktrace de casos reais):
```spl
sourcetype=fgt_traffic OR sourcetype=fgt_utm
(src=<fortimanager_ip> OR src=<fortios_ip>)
direction=outbound action=allowed
| where dest NOT IN ("trusted_external_ips")
AND (dest_port=443 OR dest_port=80)
| stats count, avg(bytes_out) as avg_bytes by src, dest, dest_port
| where avg_bytes > 1000000
```
Fonte de dados requerida: FortiGate event logs (`fgt_event`), FortiGate traffic logs (`fgt_traffic`/`fgt_utm`), logs de rede inbound na porta 541.
### Microsoft Sentinel (KQL)
Detecção de conexões inbound à porta TCP 541 do FortiOS a partir de múltiplos IPs externos:
```kql
CommonSecurityLog
| where DestinationPort == 541
| where DeviceVendor == "Fortinet" or DeviceVendor contains "Fortinet"
| where Activity contains "Accept" or Activity contains "Allow"
| summarize ConnectionCount = count(),
UniqueSourceIPs = dcount(SourceIP)
by DestinationIP, TimeGenerated = bin(TimeGenerated, 1h)
| where ConnectionCount > 5 and UniqueSourceIPs > 2
| project TimeGenerated, DestinationIP, UniqueSourceIPs, ConnectionCount
```
Detecção de processo suspeito spawning a partir do daemon fgfmd (indicador de RCE bem-sucedido):
```kql
DeviceProcessEvents
| where InitiatingProcessFileName =~ "fgfmd"
| where ProcessCommandLine contains_any ("bash", "sh", "nc", "ncat", "wget", "curl", "/bin/", "python")
| project TimeGenerated, DeviceName, InitiatingProcessFileName,
ProcessCommandLine, AccountName
| summarize Count = count() by DeviceName
| where Count > 0
```
Detecção de exfiltração de configurações - volumes anômalos de dados saindo do FortiManager:
```kql
CommonSecurityLog
| where DeviceVendor == "Fortinet"
and (DeviceProduct == "FortiManager" or DeviceProduct == "FortiGate")
| where Activity contains "Deny" or Activity contains "Close"
| where DestinationPort in (80, 443, 8080, 8443)
| where DestinationIP !startswith "10."
and DestinationIP !startswith "172."
and DestinationIP !startswith "192.168."
| summarize BytesSent = sum(SentBytes), ConnectionCount = count()
by DeviceIP, DestinationIP, TimeGenerated = bin(TimeGenerated, 1h)
| where BytesSent > 10000000
```
Tabela(s): `CommonSecurityLog`, `DeviceProcessEvents`, `SecurityEvent`
### Sigma Rule
```yaml
title: Detect CVE-2024-23113 FortiOS fgfmd Format String RCE Attempt
id: b7e14f2a-c931-4d85-a702-e83f1b567890
status: experimental
description: >
Detecta tentativas de exploração de CVE-2024-23113 - vulnerabilidade de format string
no daemon fgfmd do FortiOS. Monitoriza conexões suspeitas à porta TCP 541 (FGFM protocol)
e processos filhos anômalos gerados pelo fgfmd após exploração bem-sucedida.
Associado ao Volt Typhoon (espionagem patrocinada por estado).
references:
- [[t1190-exploit-public-facing-application]]
- https://www.fortiguard.com/psirt/FG-IR-24-029
- https://labs.watchtowr.com/fortinet-fortigate-CVE-2024-23113-a-super-complex-vulnerability-in-a-super-secure-appliance-in-2024/
logsource:
category: process_creation
product: linux
detection:
selection:
ParentImage|endswith: 'fgfmd'
CommandLine|contains:
- 'bash'
- 'sh'
- 'nc'
- 'wget'
- 'curl'
- '/bin/'
- 'python'
condition: selection
falsepositives:
- Nenhum caso legítimo documentado de fgfmd gerando processos de shell
level: critical
tags:
- attack.initial_access
- attack.t1190
- attack.execution
- attack.t1059
```
Sigma Rule complementar para detecção via rede (conexões anômalas na porta 541):
```yaml
title: Suspicious FGFM Port 541 Inbound Connection - CVE-2024-23113
id: c8f25g3b-d042-5e96-b813-f94g2c678901
status: experimental
description: >
Detecta conexões inbound à porta TCP 541 (protocolo FGFM) originárias de
fontes externas ou não autorizadas. CVE-2024-23113 é explorada via FGFM
sem autenticação prévia.
references:
- [[t1190-exploit-public-facing-application]]
- https://www.fortiguard.com/psirt/FG-IR-24-029
logsource:
category: network_connection
product: firewall
detection:
selection:
destination_port: 541
filter_internal:
source_ip|cidr:
- '10.0.0.0/8'
- '172.16.0.0/12'
- '192.168.0.0/16'
condition: selection and not filter_internal
falsepositives:
- FortiGate legítimos em redes públicas com FortiManager acessível externamente (má prática)
- Scanners de vulnerabilidade autorizados
level: high
tags:
- attack.initial_access
- attack.t1190
```
### EDR
#### CrowdStrike Falcon
Custom IOA Rule (Behavioral):
O daemon `fgfmd` não deve gerar processos filhos em operação normal. Configurar IOA para alertar quando qualquer um dos seguintes processos for iniciado com `fgfmd` como pai: `bash`, `sh`, `ksh`, `nc`, `ncat`, `wget`, `curl`, `python`, `python3`, `perl`, `php`. Este comportamento indica exploração da format string com execução remota de código bem-sucedida. Monitorar também criação de arquivos em `/tmp/`, `/var/tmp/` por processos filhos do fgfmd.
Threat Graph Query (Falcon Data Replicator):
```
event_simpleName=ProcessRollup2
| where ParentBaseFileName = "fgfmd"
| where FileName IN ("bash", "sh", "ksh", "nc", "ncat", "wget", "curl", "python", "python3", "perl")
| table timestamp, ComputerName, ParentBaseFileName, FileName, CommandLine, UserName
| sort timestamp desc
```
#### SentinelOne
Deep Visibility Query:
```
EventType = "Process Creation"
AND ParentProcessName Contains "fgfmd"
AND TargetProcessName In ("bash","sh","ksh","wget","curl","nc","ncat","python","python3")
```
#### Microsoft Defender for Endpoint (MDE)
Advanced Hunting (KQL):
```kql
DeviceProcessEvents
| where InitiatingProcessFileName =~ "fgfmd"
| where FileName has_any ("bash", "sh", "nc", "wget", "curl", "python", "perl")
| project Timestamp, DeviceName, InitiatingProcessFileName,
FileName, ProcessCommandLine, AccountName
| where Timestamp > ago(7d)
| order by Timestamp desc
```
### Firewall / Network
#### Palo Alto Networks (PAN-OS)
Criar Security Policy para bloquear tráfego inbound na porta TCP 541 proveniente de zonas não confiáveis em direção à zona onde os dispositivos FortiOS estão hospedados. Apenas IPs de FortiManager autorizados devem ter permissão de conexão na porta 541 em dispositivos FortiGate. Habilitar Threat Prevention Profile nas regras para detectar tentativas de protocol anomaly no FGFM. Em ambientes de alta segurança, considerar o bloqueio total da porta 541 para origens externas.
App-ID / Threat ID relevante: Consultar o catálogo de ameaças PAN-OS para assinaturas relacionadas a "fortinet fgfmd format string" - content updates regulares da Palo Alto incluem cobertura para CVEs Fortinet de alta severidade.
#### Fortinet FortiGate
Para proteger dispositivos FortiOS vulneráveis ao CVE-2024-23113, configurar IPS com filtragem por CVE diretamente via CLI:
```
config ips sensor
edit "FortiOS-CVE-2024-23113-Protection"
set comment "IPS sensor with CVE-2024-23113 format string protection"
config entries
edit 1
set cve "CVE-2024-23113"
set status enable
set log-packet enable
set action block
next
end
next
end
```
IPS Signature: O FortiGuard IPS database cobre CVE-2024-23113 via filtragem por CVE ID. Consultar `fortiguard.fortinet.com/encyclopedia` para o nome da assinatura específica atualizada. A assinatura detecta format string specifiers (`%n`, `%x`, `%p`) no contexto do protocolo FGFM.
Como workaround adicional de detecção/prevenção: remover o acesso FGFM de cada interface com:
```
config system interface
edit <interface>
set allowaccess <current_values_minus_fgfm>
next
end
```