Uma vulnerabilidade gravíssima foi identificada no GiveWP, um dos plugins de doação mais utilizados no WordPress. O problema é tão sério que recebeu a pontuação máxima de risco (CVSS 10.0) e permite que um invasor, sem precisar de login ou senha, execute comandos diretamente no servidor onde o site está hospedado. Quem administra sites com esse plugin precisa verificar a versão instalada com urgência.
A brecha foi descoberta pelo pesquisador Udin Chan e reportada à Patchstack, empresa especializada em segurança para WordPress, que já disponibilizou regras de mitigação para proteger os usuários enquanto uma correção definitiva não é aplicada por todos.
O que é o GiveWP e por que isso importa

O GiveWP é um plugin de arrecadação de doações amplamente usado por ONGs, igrejas e organizações sem fins lucrativos que precisam captar recursos online. Ele oferece formulários de doação, integração com diversos meios de pagamento, gestão de doadores e relatórios financeiros — funções essenciais para quem depende de contribuições via internet.
Justamente por lidar com dados sensíveis e transações financeiras, uma falha desse tipo em um plugin tão popular representa risco elevado: sites comprometidos podem ter dados de doadores expostos, ser usados para disseminar malware ou até servir de porta de entrada para ataques maiores na infraestrutura de hospedagem.
Como a falha funciona: instalação padrão já é vulnerável

Nas versões 4.16.7.1 e anteriores, o GiveWP apresenta uma vulnerabilidade conhecida como “PHP Object Injection”, que pode ser explorada em cadeia até se transformar em execução remota de código — ou seja, o invasor consegue rodar comandos como se estivesse operando o servidor diretamente.
Na versão 4.16.5.1 e anteriores, basta uma instalação padrão do plugin para o ataque ser possível. Isso porque o GiveWP já vem, de fábrica, com um gateway de teste de doação e um gateway offline ativados, sendo necessário apenas ter um formulário de doação publicado. Não é preciso modo de teste, cadastro aberto, modo de depuração nem qualquer ação de um administrador — a porta já está destrancada.
Nas versões 4.16.6 até 4.16.7.1, a exposição diminui, mas o problema continua presente. Essas atualizações fazem com que o processador de doações “legado” pare de funcionar quando o formulário enviado é do tipo Visual Form Builder (v3), o que impede o ataque em uma instalação nova e limpa através desse caminho. Mas isso não é, de fato, uma correção — é apenas uma mudança na forma de acesso. Qualquer formulário de doação que não tenha a configuração “formBuilderSettings” — mesmo estando como rascunho ou na lixeira — reativa toda a cadeia de ataque. Isso inclui:
- Todo site que foi atualizado a partir de uma versão mais antiga do plugin;
- Qualquer situação de importação ou restauração de formulários;
- Sites em que o administrador ativou a opção “Option-Based Form Editor” em Configurações → Avançado.
A engenharia do ataque: três peças que se encaixam

Entender tecnicamente o ataque ajuda a dimensionar sua gravidade. Ele depende da combinação de três elementos presentes no próprio código do plugin.
O primeiro é uma função que deveria tornar segura a “desserialização” de dados — um processo comum em PHP para reconstruir informações armazenadas em formato de texto. O GiveWP usa um parâmetro chamado “allowed_classes => false”, que teoricamente bloquearia objetos maliciosos. Só que, na prática, o PHP não descarta esse objeto: ele o transforma em um “placeholder” chamado __PHP_Incomplete_Class, mantendo intactos o nome da classe original e todas as suas propriedades. Quando esse placeholder é salvo novamente, o PHP grava de volta os mesmos dados perigosos, apenas adiando o problema para a próxima leitura.
O segundo elemento é o fluxo de doação, que abre caminho para essa falha ser explorada. Um doador com conta no site pode inserir dados maliciosos no campo “sobrenome” (last_name) do seu próprio perfil de usuário. Quando esse usuário realiza uma doação, o sistema busca essas informações do banco de dados — e não da requisição feita naquele momento — o que faz com que os mecanismos comuns de validação de entrada não detectem o problema. Os dados corrompidos acabam armazenados na tabela de sessões do sistema (wp_give_sessions) e, na próxima vez que forem lidos sem a proteção adequada, o objeto malicioso “ganha vida”.
O terceiro elemento é o que os especialistas chamam de “gadget chain”: uma sequência de funções já existentes no código do plugin que, combinadas, permitem transformar a injeção de objeto em execução real de comandos. O GiveWP inclui a biblioteca TCPDF e classes internas chamadas GiveTestData, e juntas elas formam essa cadeia completa. O processo termina em uma função que chama “call_user_func_array()” sem qualquer verificação sobre o que está sendo executado — abrindo espaço para que o invasor aponte para comandos do sistema operacional, como o “system()”, e assuma controle direto do servidor.
Um invasor sem qualquer conta no site consegue executar comandos arbitrários no servidor de uma instalação padrão do GiveWP, desde que exista um formulário de doação publicado e um gateway de pagamento ativo.
O que fazer agora

Diante da gravidade da falha — pontuação máxima de risco e possibilidade de exploração sem autenticação — a orientação é atualizar o GiveWP imediatamente para a versão mais recente disponível. Administradores de sites que utilizam o plugin devem verificar também se há formulários antigos, importados ou restaurados que possam reativar a vulnerabilidade mesmo após a atualização, já que a simples ausência da configuração “formBuilderSettings” em qualquer formulário — inclusive os descartados na lixeira — é suficiente para reabrir a brecha.