CVE-2019-9082
Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.
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
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.