← volver
CVE-2019-9082highbajo ataqueCWE-306

CVE-2019-9082

100Vexday Risk Score

Corrige ahora. Ella está bajo explotación confirmada por CISA y tiene exploit funcional público.

ssvc Actcvss 8.8epss 97%
de la publicación al arma8 días
Publicada en NVD24 feb
1ª PoC+8d
metasploit10 dic
CISA KEV+983d
probabilidad de explotación
97%top 1% de las CVE
explotación observada
CISA + VulnCheck
4 exploit(s) público(s)
Acción exigida por CISAplazo federal: 2022-05-03

Apply updates per vendor instructions.

Resumen

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.

Detalle 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.

Cómo se explota

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.

Versiones

Afectadas
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.
Corregidas en
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.

Cómo protegerse

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.

Cómo 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.

Investigado y redactado con IA a partir del advisory del fabricante y análisis públicos, con las fuentes citadas. Verifica siempre la versión corregida en el advisory oficial antes de actuar.
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
Productos afectados
n/a · n/a
⚠ Recursos públicos, para evaluar la exposición de sistemas que controlas o estás autorizado a probar. Prueba solo con autorización.