Resumo: filtro woocommerce_credit_card_form_fields a passar HTML de plugin não saneado ao echo
- Não saneado por design: Toda a gente assume que o WooCommerce saneia o que os plugins injetam no checkout, mas o filtro woocommerce_credit_card_form_fields imprime qualquer HTML que o plugin devolva, e uma única entrada $fields['malicious_field'] transforma-se numa tag de script em cada vista de checkout.
- O runtime apanha-o: A cside detém injeções de scripts em runtime independentemente do filtro WordPress que as deixou passar, portanto um plugin duvidoso que corre no navegador é apanhado no momento em que toca em campos de cartão, cookies ou num redirect, não meses depois numa auditoria WordPress.
- wp_kses foi ignorado: O wp_kses existe no core e o WooCommerce escolheu não passar a saída dos plugins por ele, portanto a decisão não é se confiar em cada plugin que instala, é se a camada do navegador apanha aqueles em que já confia e que foram comprometidos na próxima release.
Sem tempo? Veja o bloqueio de Magecart e skimmers no navegador da cside. Cobre tudo o que se segue numa única implementação.
O WooCommerce é uma ferramenta poderosa e flexível que ajuda a gerir uma loja online. Uma das formas como o faz é permitir que os plugins personalizem partes do site, como a página de checkout, através de algo chamado "filtros" do WordPress.
Essa flexibilidade é ótima, mas também acarreta um risco: se instalar um plugin malicioso, este pode alterar silenciosamente a sua página de checkout de formas perigosas, e o WooCommerce não consegue impedir isso.
Estamos a falar de injeção de malware, roubo de dados de cartão de crédito e violações de conformidade. Sem contar os danos à marca e à confiança dos clientes…
O ponto de entrada de ataques no checkout do WooCommerce
Ao rever os gateways de pagamento do WooCommerce (Cartão de Crédito e eCheck), verificámos que os plugins podem injetar o seu próprio HTML diretamente no formulário de checkout.
Trecho de código: como o WooCommerce passa o HTML do plugin para o checkout
$fields = wp_parse_args(
$fields,
apply_filters('woocommerce_credit_card_form_fields', $default_fields, $this->id)
);
foreach ($fields as $field) {
echo $field; // Isto simplesmente imprime qualquer HTML que o plugin devolver
}
O WooCommerce espera que os plugins se comportem bem aqui. Mas o problema é que NÃO verifica nem limpa o que o plugin envia. Um plugin pode adicionar qualquer coisa, incluindo scripts perigosos.
Como os plugins do WooCommerce podem comprometer as suas páginas de checkout
Imaginemos que o proprietário de um site WooCommerce instala um plugin suspeito, talvez proveniente de um site duvidoso ou de um programador desconhecido.
Esse plugin poderia injetar uma linha de código como:
$fields['malicious_field'] = '<script>/* JavaScript malicioso aqui */</script>';
Isto apareceria então na sua página de checkout e todos os visitantes carregariam esse script. Como o WooCommerce não limpa esta saída, o script malicioso é executado no navegador do utilizador. Isto é grave.
Plugins suspeitos do WooCommerce roubam dados dos seus clientes
Se um plugin malicioso injetasse uma linha de código maliciosa, eis o que poderia acontecer:
- Roubo de informações de pagamento, como dados de cartão de crédito ou eCheck.
- Sequestro de sessões de clientes, através do roubo de cookies.
- Redirecionamento de utilizadores para páginas falsas (phishing) semelhantes ao seu site.
- Danos à marca — os utilizadores perdem a confiança se o seu site for comprometido.
Este é um problema de cadeia de abastecimento em que um único plugin malicioso pode prejudicar toda a sua loja.
Isto não é um bug do WooCommerce, é um problema geral do lado do navegador
Para que fique claro, o WooCommerce não está a fazer nada de errado aqui. É assim que os filtros devem funcionar no WordPress.
Mas depois de um plugin ser instalado, o WooCommerce não tem forma de saber se esse plugin é bom ou mau. Os plugins podem tocar em partes sensíveis do seu site, como o formulário de checkout, e isso abre a porta a problemas.
Cada plugin adiciona risco. Quantos mais plugins instalar, mais coisas podem correr mal.
Mesmo que o WooCommerce, enquanto plataforma, seja seguro, um plugin malicioso ainda pode causar grandes danos ao seu site.
Como detetar e proteger-se contra plugins maliciosos do WooCommerce
1. Avalie a origem do fornecedor
Mais vale prevenir do que remediar: faça a si mesmo duas perguntas rápidas.
- Posso confiar nesta fonte?
- Onde é que obtive este plugin?
Se não tiver a certeza: mantenha-se afastado de downloads aleatórios em zip. Não valem o incómodo. Opte pela aposta segura e transfira plugins apenas de fontes fiáveis, como o diretório do WordPress ou fornecedores de confiança. Certifique-se de verificar:
- As avaliações (classificação média e recência das avaliações)
- Se o publicador é uma pessoa individual ou uma empresa
2. O plugin é mantido ativamente?
Não instale às cegas, mesmo vindo de fornecedores de confiança. Plugins populares podem ser abandonados. Dê uma vista de olhos rápida: quando foi a última atualização? Atualizações pouco frequentes, ou plugins que já não recebem atualizações de todo, significam que não têm recebido patches de segurança adequados.
3. Reveja a sua lista de plugins (atualize e remova os que não usa)
Todos os administradores do WordPress caem nesta armadilha. Instalamos plugins e esquecemo-nos completamente deles. Crie o hábito de rever e limpar a sua lista de plugins. Facilite um pouco a sua vida e mantenha a lista curta e clara. Se não precisar de algo, remova-o.
Certifique-se de atualizar os plugins regularmente. Estas atualizações contêm frequentemente patches de segurança que, de outra forma, deixariam o seu site exposto. E quando "desinstalar" um plugin, certifique-se de que segue um processo completo de desinstalação. Alguns plugins deixam código no seu backend mesmo depois de serem desinstalados.
4. Procure vulnerabilidades conhecidas
Uma pesquisa rápida no Google pode poupar-lhe muitos problemas. Basta fazer uma pesquisa no Google ou num LLM assim: [nome do plugin] security vulnerabilities.
Esta captura de ecrã mostra os resultados de uma vulnerabilidade conhecida de uma aplicação de avaliações que expôs 80.000 sites. Se identificar uma vulnerabilidade de segurança, escolha um plugin diferente ou aguarde até que a equipa de desenvolvimento tenha corrigido o problema existente no plugin que está a avaliar.
5. Utilize uma ferramenta de monitorização
Para automatizar isto, pode proteger os seus plugins com uma ferramenta de monitorização. Se algum código suspeito se infiltrar, saberá imediatamente, antes que prejudique a sua loja ou a confiança dos seus clientes.
Existem vários plugins de segurança no ecossistema do WordPress que oferecem esta funcionalidade (certifique-se de avaliar também a segurança destes).
Também pode utilizar uma solução como a cside, que impede injeções de scripts, além de defender os seus utilizadores contra uma infinidade de ataques do lado do cliente, incluindo:
- E-skimming, exposição de dados pessoais (PII), redirecionamentos maliciosos e ataques de roubo de sessões através de cookies
Mantenha o WooCommerce atualizado
As atualizações recentes do WooCommerce têm resolvido cada vez mais injeções de scripts e ataques de cross-site scripting. Muitos ataques bem-sucedidos que afetam comerciantes devem-se à utilização de uma instância desatualizada do WooCommerce. Certifique-se de que o seu site está atualizado com a versão mais recente (verifique a sua lista de plugins do WordPress para ver se há atualizações disponíveis).
O que o WooCommerce pode fazer
Há o lojista e há o WooCommerce. Cada um tem de tomar medidas de segurança. Os proprietários de lojas são responsáveis pelos plugins que escolhem e utilizam. Esse é o preço a pagar pela flexibilidade e facilidade de utilização da solução WooCommerce com os filtros do WordPress. Posto isto, algumas proteções adicionais por parte do WooCommerce poderiam ajudar.
Porque não limpar o código dos plugins e remover scripts perigosos antes de os clientes os utilizarem? O WordPress já tem ferramentas como o wp_kses() que removem scripts perigosos, e o WooCommerce poderia utilizá-las aqui.
Em vez de despejar HTML em bruto, o WooCommerce poderia utilizar campos estruturados. Por exemplo, o plugin define o que precisa e o WooCommerce renderiza o HTML. Desta forma, o WooCommerce mantém o controlo.
Também poderia enviar um aviso aos proprietários de lojas ou administradores se um plugin estiver a tentar modificar o formulário de checkout. Isto acrescentaria proteção extra onde realmente importa.
Embora os proprietários de lojas sejam responsáveis pelo que instalam, o WooCommerce poderia acrescentar algumas proteções, como:
- Escapar ou sanear o HTML gerado por plugins através de funções como o wp_kses().
- Substituir o HTML em bruto por campos estruturados, para que o WooCommerce controle a saída final.
- Avisar os administradores quando os plugins modificam partes sensíveis da página de checkout.
Considerações finais
Isto não é uma vulnerabilidade nova e assustadora nem uma falha no WooCommerce, é simplesmente como o sistema de plugins funciona. Mas é também um lembrete:
A sua loja só é tão segura quanto os plugins que instala.
Se utiliza o WooCommerce (ou qualquer plataforma semelhante), trate cada plugin como se tivesse acesso às carteiras dos seus clientes, porque muitas vezes tem.









