
CVE-2024-21762 é uma vulnerabilidade crítica nos produtos FortiOS e FortiProxy da Fortinet, presente no componente SSL VPN.
CVE-2024-21762 é uma vulnerabilidade crítica nos produtos FortiOS e FortiProxy da Fortinet, presente no componente SSL VPN. Essa vulnerabilidade permite que um atacante remoto não autenticado execute código ou comandos arbitrários no sistema alvo por meio de requisições HTTP especialmente elaboradas, podendo levar ao controle total do sistema.
Impacto: Devido à existência dessa vulnerabilidade, um atacante pode executar código arbitrário remotamente sem necessidade de qualquer autenticação, assumindo o controle total do dispositivo afetado. Isso pode resultar em vazamento de dados sensíveis, interrupção de serviços e até mesmo ataques cibernéticos adicionais.
Método de ataque: O principal meio utilizado pelo atacante para explorar essa vulnerabilidade é o envio de requisições HTTP especialmente elaboradas, que disparam a vulnerabilidade de escrita fora dos limites no componente SSL VPN. Especificamente, o atacante pode manipular dados na memória por meio de requisições cuidadosamente construídas, alcançando, em última instância, a execução remota de código.
Medidas de proteção: Para prevenir ataques contra essa vulnerabilidade, recomenda-se atualizar imediatamente o FortiOS e o FortiProxy para as versões de segurança mais recentes fornecidas oficialmente. Além disso, desabilitar o recurso SSL VPN também é uma medida de proteção temporária.
CVE-2024-21762 é uma vulnerabilidade de alto risco no Fortinet FortiOS SSL VPN, classificada como uma vulnerabilidade de escrita fora dos limites não autorizada. A vulnerabilidade pode ser usada para execução remota de código (RCE), representando uma ameaça à segurança das redes corporativas.
A FortiGate publicou atualizações em fevereiro de 2024, corrigindo diversas vulnerabilidades de média e alta gravidade. Entre elas, este artigo analisa em detalhes o processo de exploração da CVE-2024-21762, incluindo como usar essa vulnerabilidade para alcançar a execução remota de código.
O seguinte código PoC foi fornecido pela assetnote e demonstra as etapas básicas para explorar essa vulnerabilidade.
# Fragmento de código de exploração simplificado
ssl_do_handshake_ptr = b"%60%ce%42%00%00%00%00%00" # Ponteiro do handshake SSL
getcwd_ptr = b"%70%62%2c%04%00%00%00%00" # Ponteiro da função getcwd
pivot_1 = b"%52%f7%fd%00%00%00%00%00" # Conjunto de instruções pivot 1
pivot_2 = b"%ac%c9%ab%02%00%00%00%00" # Conjunto de instruções pivot 2
rop = b"" # Cadeia ROP
rop += b"%c6%e2%46%00%00%00%00%00"
rop += b"%19%6f%4d%01%00%00%00%00"
# ... o restante do conteúdo da cadeia ROP foi omitido
# Dados de requisição forjados
body = (b"B"*1808 + b"=" + b"B"*1024 + b"&") * 20
data = b"POST /remote/hostcheck_validate HTTP/1.1\r\n"
data += b"Host: 192.168.1.229\r\n"
data += f"Content-Length: {len(body)}\r\n".encode("utf-8")
data += b"\r\n" + body
# Envio da requisição forjada
ssock1 = make_sock(TARGET, PORT)
ssock1.sendall(data)
Ao comparar os arquivos binários do FortiOS 7.4.2 e 7.4.3, o código corrigido está localizado na função sub_18F4980. A correção concentra-se principalmente nos dois pontos a seguir:
chunk, foi adicionada uma validação do comprimento do chunk. Se o comprimento decodificado exceder 16, ele é considerado inválido.chunk trailer foi corrigida, prevenindo a escrita fora dos limites de \r\n.Disparo da escrita fora dos limites:
chunk, se o campo de comprimento for decodificado como 0, a leitura do chunk trailer é disparada.chunk trailer, \r\n é escrito na pilha de acordo com o campo de comprimento.0, será disparada a escrita fora dos limites de \r\n próximo ao endereço de retorno.Estouro de pilha e sequestro de fluxo:
chunk cuidadosamente construídos, é possível sobrescrever o endereço de retorno na pilha, alcançando o objetivo de sequestrar o fluxo de controle do programa.Embora seja possível realizar o sequestro por meio da cadeia ROP, o /bin/sh no programa principal da FortiGate não possui capacidade de executar comandos diretamente, portanto é necessário buscar outras funções exploráveis. Por exemplo, forjando ponteiros de estruturas e utilizando SSL_do_handshake para ataques adicionais.
Mesmo na configuração padrão (com o modo Web desabilitado), essa vulnerabilidade ainda pode ser explorada.

A CVE-2024-21762 é uma vulnerabilidade de alta complexidade, cujo processo de exploração exige um profundo entendimento da lógica de código e do layout de memória do FortiOS. Em comparação com desafios tradicionais de CTF, a exploração de vulnerabilidades reais requer uma análise de contexto e estrutura mais complexa.
O autor forneceu um artigo de análise mais detalhado em chinês, que pode ser consultado em: Endereço original