← back
CVE-2025-64328highunder attackCWE-78

FreePBX Administration GUI is Vulnerable to Authenticated Command Injection

100Vexday Risk Score

Patch now. It under exploitation confirmed by CISA and has a working public exploit.

ssvc Actcvss 8.6epss 85%
from disclosure to weapon8 days
Published on NVDNov 7
1st PoC+8d
metasploit+1d
CISA KEV+88d
exploitation probability
85%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
1 public exploit(s)
Action required by CISAfederal deadline: 2026-02-24

Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.

Summary

Falha de injeção de comando de SO (CWE-78) no módulo filestore do FreePBX Endpoint Manager, explorável por qualquer usuário autenticado com acesso ao painel administrativo (ACP), permitindo execução arbitrária de comandos como usuário asterisk. É pré-condição real — não é RCE não-autenticado — mas está na lista KEV da CISA com exploração ativa confirmada, incluindo uma campanha documentada de web shell persistente (EncystPHP) atribuída ao grupo INJ3CTOR3.

Technical detail

A vulnerabilidade está na função check_ssh_connect() do arquivo drivers/SSH/testconnection.php, parte da funcionalidade 'testconnection' do filestore, usada pela interface administrativa para validar conexões SSH ao configurar armazenamento remoto de gravações/arquivos. A função recebe os parâmetros $host, $port, $user, $key e $path — todos originados de entrada do usuário via o painel administrativo — e os concatena diretamente em chamadas exec(), como exec("mkdir -p $keypath") e exec("ssh-keygen -t ecdsa -b 521 -f $key -N \"\" && chown asterisk:asterisk $key && chmod 600 $key"), sem sanitização ou escaping de metacaracteres de shell.

Como $key (e o $keypath derivado via dirname($key)) e $path chegam ao shell sem filtragem, um atacante que controle esses campos pode inserir metacaracteres (;, &&, |, backticks, etc.) para encadear comandos arbitrários que serão executados no contexto do processo web/Asterisk. O código foi introduzido por volta de março de 2025, segundo o próprio advisory do FreePBX, o que situa a janela de exposição em vários meses antes da divulgação em novembro de 2025.

O CVSS 4.0 base (8.6) reflete o pior caso teórico — comprometimento total de confidencialidade, integridade e disponibilidade do sistema vulnerável — mas o próprio FreePBX publicou no advisory uma pontuação com Threat Environment Supplemental que reduz drasticamente a severidade percebida (CVSS-BTES 6.1 Medium, ou 0.9 Low sob CVSS 4.1), argumentando que o requisito de autenticação prévia via ACP muda substancialmente o perfil de risco em ambientes bem configurados.

How it’s exploited

O vetor exige que o atacante já possua credenciais válidas de acesso ao FreePBX Administration Panel (ACP) — o advisory fala em 'autenticação com um usuário conhecido' e a CVSS marca Privileges Required como High. Não há bypass de autenticação documentado nesta CVE: a exploração depende de o painel estar acessível na rede (ou exposto à internet) e de o atacante ter, ou obter, login válido. Uma vez autenticado, basta acionar a função de teste de conexão SSH do módulo filestore com valores manipulados nos campos de caminho/chave para injetar comandos que rodam como o usuário asterisk.

Há exploração ativa confirmada e catalogada no KEV da CISA. A FortiGuard Labs documentou incidentes desde início de dezembro (referenciados em relatório de janeiro de 2026) associados ao grupo INJ3CTOR3 — mesmo grupo ligado historicamente a CVE-2019-19006 (FreePBX) e CVE-2021-45461 (Elastix). Nesses casos, após a injeção de comando, os atacantes baixam um dropper que instala o web shell 'EncystPHP', disfarçado de ajax.php dentro da própria estrutura do FreePBX; o dropper apaga usuários e cron jobs legítimos, remove outros web shells concorrentes, cria um usuário root persistente (newfpbx), injeta chave SSH e garante que a porta 22 permaneça aberta — um padrão de comprometimento total e persistente, não um simples RCE pontual.

Existem módulo Metasploit, template Nuclei e PoC pública, o que reduz a barreira técnica para quem já tem credenciais — a etapa de descoberta e weaponização do payload de injeção está automatizada; o obstáculo real é obter acesso autenticado ao ACP.

Versions

Affected
FreePBX Endpoint Manager (módulo filestore, FreePBX 17) versões >= 17.0.2.36 e < 17.0.3.
Fixed in
17.0.3 (módulo filestore).

How to protect

Atualizar o módulo filestore para a versão 17.0.3 ou superior é a correção definitiva — o vendor fixou a falha diretamente no código de check_ssh_connect(). Não há indicação de patch parcial ou flag de configuração que neutralize a injeção sem atualizar o módulo.

Se a atualização não for imediatamente viável, o próprio advisory do FreePBX lista dois controles compensatórios: garantir que apenas usuários autorizados tenham acesso ao FreePBX Administrator Control Panel (revisar contas, remover credenciais compartilhadas ou de terceiros) e bloquear acesso ao ACP a partir de redes não confiáveis, por exemplo restringindo a interface a IPs de gestão via firewall de borda ou o módulo de firewall do próprio FreePBX. Nenhuma dessas medidas corrige a vulnerabilidade — apenas reduz a superfície de quem pode chegar até o ponto de exploração, então continuam vulneráveis a qualquer credencial de ACP comprometida (phishing, reuso de senha, credential stuffing).

Dado o histórico documentado pela FortiGuard de webshells persistentes instalados após exploração (EncystPHP), sistemas que rodaram versões no intervalo vulnerável (17.0.2.36 até antes de 17.0.3) e tiveram o ACP exposto devem ser tratados como potencialmente comprometidos, não apenas patcheados — vale auditar contas de usuário criadas fora do processo normal, chaves SSH autorizadas não reconhecidas, e arquivos PHP como ajax.php/model.php com permissões ou conteúdo alterados.

How to detect

Nos logs do FreePBX/Asterisk e do servidor web, procurar acessos à funcionalidade de teste de conexão do filestore (rota associada a testconnection/check_ssh_connect) com parâmetros de host, caminho ou nome de chave contendo metacaracteres de shell (;, |, &&, backticks, $()). Em nível de sistema, sinais de comprometimento pós-exploração documentados pela FortiGuard incluem: criação do usuário 'newfpbx' com UID/GID 0, alterações de senha em massa em contas de sistema, chaves SSH públicas injetadas em authorized_keys, presença de arquivo ajax.php modificado fora do padrão de atualização do FreePBX, permissão 000 aplicada a ajax.php/model.php, remoção do módulo endpoint, e conexões de saída para o IP 45.234.176.202 ou o domínio crm.razatelefonia.pro.

Não há um único indicador de rede confiável para a tentativa de exploração em si, já que o tráfego malicioso é indistinguível de uso legítimo do painel administrativo sem inspeção do conteúdo dos parâmetros enviados — a detecção depende de monitorar o payload da requisição ou os artefatos pós-exploração no host, não apenas volume ou origem de tráfego.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
FreePBX Endpoint Manager is a module for managing telephony endpoints in FreePBX systems. In versions 17.0.2.36 and above before 17.0.3, the filestore module within the Administrative interface is vulnerable to a post-authentication command injection by an authenticated known user via the testconnection -> check_ssh_connect() function. An attacker can leverage this vulnerability to obtain remote access to the system as an asterisk user. This issue is fixed in version 17.0.3.
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Affected products
FreePBX · filestore
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.