CVE-2019-19006
Priorize a correção. Ela está sob exploração confirmada pelo CISA.
Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.
Resumo
Falha de autenticação (CWE-287) no módulo Framework do FreePBX que permite a um atacante não autenticado obter uma sessão administrativa válida no portal admin, sem conhecer a senha. Afeta diretamente quem expõe o painel administrativo do FreePBX/PBXact à internet — é o cenário mais comum em instalações VoIP mal segmentadas, e por isso a falha foi amplamente explorada em campanhas de fraude de chamadas (toll fraud) e implantação de webshells.
Detalhamento técnico
A vulnerabilidade está no fluxo de autenticação do módulo Framework do FreePBX. Ao receber uma tentativa de login, o código primeiro grava uma sessão PHP associada ao usuário informado e só depois valida a senha contra o banco; se a senha não confere, a sessão é destruída (unset). O parâmetro 'password' enviado pelo formulário de login não passa por sanitização de tipo antes de entrar na rotina de comparação.
Ao enviar o parâmetro como elemento de array (por exemplo password[0]) em vez de string, a função de comparação de senha falha de forma anômala antes de chegar ao ponto do código que remove a sessão. Resultado: a sessão criada para o usuário escolhido — inclusive 'admin' — permanece válida, mesmo com senha incorreta ou irrelevante. O atacante não precisa acertar a senha, só escolher qual usuário quer personificar.
É CWE-287 (Improper/Incorrect Authentication) segundo classificação da CISA no catálogo KEV. A Check Point Research reconstruiu o mecanismo comparando tráfego de ataque capturado com commits no repositório GitHub do FreePBX Framework logo após a correção, já que o Sangoma optou por não publicar detalhes técnicos do vetor por preocupação com exploração em massa.
Como é explorada
O vetor é remoto, não autenticado e via HTTP/HTTPS contra o portal administrativo do FreePBX (porta padrão do Admin GUI, tipicamente 443 ou 80/443 dependendo da instalação). Não exige configuração não padrão nem acesso interno — o único pré-requisito real é que o painel admin esteja acessível pela rede de onde o atacante está, o que Sangoma confirmou no fórum oficial: instalações que restringem o Admin GUI e não o expõem à internet aberta não são exploráveis remotamente por este vetor.
A exploração documentada pela Check Point Research (campanha 'Inj3ctor3', 2020) segue um fluxo consistente: varredura da internet com SIPVicious (módulo svmap) para localizar servidores FreePBX/Asterisk expostos e identificar versões vulneráveis; exploração da falha de autenticação para logar como admin; uso do módulo asterisk-cli do próprio painel para executar comandos e enviar um webshell PHP inicial codificado em base64. A partir daí a exploração se ramifica em duas cadeias: uma extrai credenciais dos arquivos /etc/amportal.conf e /etc/asterisk/sip_additional.conf (senhas do banco de dados FreePBX e de todas as extensões SIP) e usa o sistema comprometido para originar chamadas de saída fraudulentas testando prefixos internacionais; a outra instala webshells adicionais com proteção por senha e controle de IP de origem, persistência via alteração de .htaccess e um painel PHP que permite originar chamadas e executar comandos arbitrários.
O impacto final é acesso administrativo total ao PBX: leitura de credenciais de todas as extensões, capacidade de originar chamadas (fraude de tarifação/toll fraud com custo financeiro direto à vítima), execução de comandos no sistema operacional subjacente e persistência via webshell. A CVE está no catálogo KEV da CISA como exploração confirmada in-the-wild.
Versões
Como se proteger
A correção do fornecedor é atualizar o módulo Framework (não a versão geral do FreePBX) para: 13.0.197.14 ou superior, 14.0.13.12 ou superior, 15.0.16.27 ou superior. A atualização é aplicada via Admin -> Module Admin, ou pela linha de comando com 'fwconsole ma list' para checar a versão instalada do módulo 'framework' e 'fwconsole ma upgrade framework' (ou upgrade geral) para corrigir. Sistemas configurados para aplicar atualizações de segurança automaticamente já devem estar corrigidos desde novembro de 2019, mas a checagem manual é necessária porque a falha continuou sendo explorada em campanhas até 2020, indicando muitos sistemas nunca atualizados.
Se a atualização não é imediata, o controle compensatório real e confirmado pelo próprio Sangoma é não expor o Admin GUI do FreePBX à internet aberta — restringir por firewall, VPN ou lista de IPs. Isso neutraliza o vetor remoto por completo, já que o exploit depende de acesso HTTP ao portal admin. Deixar apenas as portas SIP e de mídia expostas (com origem restrita a IPs de provedores conhecidos) e não abrir a porta administrativa é suficiente segundo confirmação dos próprios mantenedores no fórum oficial.
Se houver suspeita de comprometimento anterior à correção: resetar sessões PHP ativas ('rm -f /var/lib/php/session/*'), auditar contas de admin em busca de usuários não reconhecidos, resetar senhas/segredos de todas as extensões SIP (visíveis no painel admin para qualquer sessão autenticada) e trocar credenciais de provedores SIP upstream que usem autenticação por usuário/senha. Não confiar apenas na presença de um WAF genérico como mitigação — o ataque manipula um parâmetro de formulário legítimo (password como array) e não exibe assinatura óbvia de exploit tradicional (SQLi, RCE payload), o que reduz a eficácia de regras de WAF não específicas para este caso.
Como detectar
Nos logs de acesso HTTP do servidor web (access_log/error_log do Apache ou equivalente), procurar requisições POST à página de login do admin (endpoint de autenticação do FreePBX) com o parâmetro 'password' enviado como array — sintaticamente algo como 'password[0]=' ou 'password[]=' no corpo da requisição — em vez do formato padrão 'password=valor'. Esse padrão de parâmetro é a assinatura mais direta da tentativa de exploração.
Outros sinais indiretos, conforme documentado na campanha real: varreduras prévias com assinatura de SIPVicious/svmap na rede; contas de administrador novas ou não reconhecidas no painel FreePBX; presença de arquivos webshell como '/var/www/html/admin/views/config.php' não originado de instalação legítima; entradas anômalas adicionadas a '.htaccess' redirecionando para esse arquivo; chamadas de saída para destinos internacionais incomuns nos CDRs do Asterisk (indicativo de toll fraud); e download de conteúdo codificado em base64 a partir de serviços como Pastebin nos logs de outbound do servidor. Não há um único log nativo do FreePBX que registre 'tentativa de bypass' de forma explícita — a detecção depende de correlacionar esses sinais indiretos, já que a exploração usa um parâmetro de formulário legítimo manipulado, não uma rota ou payload exótico.