← voltar
CVE-2019-9082highsob ataqueCWE-306

CVE-2019-9082

100Vexday Risk Score

Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.

ssvc Actcvss 8.8epss 97%
da publicação à arma8 dias
Publicada no NVD24 de fev.
1ª PoC+8d
metasploit10 de dez.
CISA KEV+983d
probabilidade de exploração
97%top 1% das CVEs
exploração observada
simCISA + VulnCheck
4 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2022-05-03

Apply updates per vendor instructions.

Resumo

CVE-2019-9082 é uma falha de execução remota de comando no framework PHP ThinkPHP, explorada via chamada ao método interno invokeFunction do controlador \think\app, que permite acionar call_user_func_array com função e argumentos controlados pelo atacante (tipicamente system() + comando). Está no catálogo KEV da CISA, com exploração confirmada em campo, e tem módulo Metasploit e template Nuclei públicos — a barreira técnica para explorá-la é baixa. Não exige autenticação: qualquer instância exposta com a rota vulnerável habilitada está em risco.

Detalhamento técnico

O dispatch de rotas do ThinkPHP permite indicar controlador e método diretamente via parâmetro de URL ("s"). A classe \think\app expõe o método invokeFunction, que — sem validação adequada de quais funções internas podem ser chamadas externamente — permite ao atacante escolher a função PHP a executar (vars[0]) e os argumentos passados a ela (vars[1][]) via call_user_func_array. O resultado é injeção de código (CWE-94); a CISA também associa CWE-306 (ausência de autenticação para função crítica), já que a rota fica acessível sem login em instalação padrão. O atacante controla integralmente qual função nativa do PHP é invocada e o conteúdo do primeiro argumento — no payload canônico documentado, function=system e vars[1][]=, resultando em execução arbitrária de comando no contexto do processo web/PHP.

Como é explorada

O vetor é uma requisição HTTP simples (GET ou POST) contra o endpoint público do framework, sem necessidade de autenticação ou configuração fora do padrão — basta acesso de rede ao serviço e a rota de dispatch habilitada. Isso torna a exploração trivial de automatizar, e de fato há registro de exploração massiva por scanners e botnets contra ThinkPHP e produtos que o embutem, o que motivou a inclusão no catálogo KEV da CISA (adicionada em 2021-11-03, com prazo de correção definido para 2022-05-03 para agências federais dos EUA). A existência de módulo Metasploit e template Nuclei elimina praticamente toda a barreira de conhecimento técnico necessária para explorar em massa.

Versões

Afetadas
Segundo a descrição oficial do CVE: ThinkPHP anterior à versão 3.2.4, usado em Open Source BMS v1.1.1 e outros produtos que embutem o framework. Ressalva importante: o mecanismo de exploração publicamente documentado (rota invokeFunction/\think\app) é característico das branches 5.x do ThinkPHP, não da série 3.2 — há inconsistência entre a numeração de versão atribuída ao CVE e a mecânica técnica descrita. Trate a versão declarada com cautela e teste a rota diretamente contra a instância em vez de confiar apenas no número de versão.
Corrigidas em
3.2.4 e versões posteriores, conforme a descrição oficial do CVE. Não há, nas fontes consultadas, confirmação de número de patch específico para os ramos 5.0.x/5.1.x do ThinkPHP associados à mesma técnica de exploração — se a instância roda 5.x, verifique o changelog oficial do projeto antes de assumir que está corrigida.

Como se proteger

A ação recomendada pela CISA é 'aplicar atualizações conforme instruções do fornecedor'. A descrição oficial do CVE indica correção a partir da versão 3.2.4 do ThinkPHP; se a instância expõe a rota vulnerável e não pode ser atualizada imediatamente, o paliativo real é bloquear no WAF/proxy reverso requisições cujo parâmetro de rota contenha 'invokefunction', 'call_user_func_array' ou o namespace '\think\app' — isso reduz superfície de ataque para o payload conhecido, mas não corrige a causa raiz: qualquer variação do payload que escape do filtro volta a funcionar. Desabilitar modo debug e multi-módulo em produção, quando aplicável, também reduz exposição. Não funciona como mitigação: ocultar banners ou mensagens de erro que identifiquem o framework — scanners testam a rota diretamente, sem depender de fingerprint visível.

Como detectar

Nos logs de acesso do servidor web, procure requisições para rotas contendo 'public/?s=index/\think\app/invokefunction', 'call_user_func_array' ou 'vars[0]=' no querystring — a presença isolada já indica tentativa de exploração, mesmo sem sucesso confirmado. Complementar com monitoramento de processos filhos inesperados do PHP-FPM/Apache (chamadas a system(), sh -c) e criação de arquivos/webshells em diretórios de template ou upload imediatamente após essas requisições. Como a CVE está no KEV por exploração massiva e automatizada, presença do payload no log não implica necessariamente ataque direcionado — correlacione com o código de resposta HTTP e atividade pós-exploração antes de escalar como incidente.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
ThinkPHP before 3.2.4, as used in Open Source BMS v1.1.1 and other products, allows Remote Command Execution via public//?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]= followed by the command.
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Produtos afetados
n/a · n/a
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.