Falha crítica em plugin de acessibilidade do WordPress expõe dados de mais de 400 mil sites

Uma vulnerabilidade crítica foi identificada no Ally, plugin gratuito do WordPress voltado para acessibilidade digital. A falha permite que invasores acessem o banco de dados de um site sem qualquer tipo de autenticação, abrindo caminho para o roubo de informações sensíveis, incluindo senhas criptografadas.

O problema foi descoberto em 4 de fevereiro de 2026 pelo engenheiro de segurança Drew Webber, da empresa Acquia. A vulnerabilidade recebeu o identificador CVE-2026-2413 e foi classificada com nota 7.5 no sistema CVSS, indicando gravidade alta.

Como a vulnerabilidade funciona

O plugin Ally — anteriormente conhecido como One Click Accessibility — foi criado para ajudar desenvolvedores a tornar seus sites mais acessíveis. Entre seus recursos estão um scanner de acessibilidade com sugestões baseadas em inteligência artificial, um widget para visitantes e ferramentas para gerar declarações de acessibilidade automaticamente.

Atualmente, o plugin está instalado em mais de 400 mil sites, o que amplia significativamente o impacto potencial da falha.

O problema está em uma função chamada get_global_remediations(), responsável por montar consultas ao banco de dados com base na URL de uma página. Essa função cria uma consulta do tipo JOIN no banco de dados, mas trata o endereço de forma inadequada antes de inseri-lo no código SQL.

Para filtrar a URL, o plugin utiliza a função esc_url_raw(). Embora essa função seja útil para validar a estrutura de endereços da web, ela não foi projetada para proteger consultas de banco de dados.

Isso significa que caracteres usados em ataques de SQL Injection, como aspas e parênteses, passam pela filtragem sem serem bloqueados.

O método recomendado no WordPress seria utilizar a função wpdb->prepare(), que escapa corretamente os dados e os trata como valores dentro da consulta, impedindo que se tornem parte da lógica do código SQL.

Sem essa proteção, a URL enviada pelo atacante acaba sendo inserida diretamente na consulta executada pelo banco de dados.

O que um invasor pode fazer

Explorando a falha, um atacante pode executar uma técnica conhecida como injeção SQL cega baseada em tempo.

Nesse tipo de ataque, o invasor envia consultas manipuladas contendo comandos que provocam atrasos na resposta do servidor — por exemplo, utilizando funções como SLEEP().

Se o site demora a responder, significa que a condição testada na consulta era verdadeira. Se responde rapidamente, a condição era falsa.

Repetindo esse processo diversas vezes, o atacante consegue extrair informações do banco de dados bit a bit, sem que o sistema identifique o ataque de forma evidente.

Embora seja um método relativamente lento, ele permite acessar dados importantes armazenados no banco, como:

  • hashes de senhas
  • informações de usuários
  • dados internos do site

Como a falha foi corrigida

O pesquisador Drew Webber reportou a vulnerabilidade de forma responsável por meio do programa de recompensas por bugs da Wordfence, recebendo US$ 800 pela descoberta.

A Wordfence notificou a Elementor, responsável pelo plugin, em 13 de fevereiro. A empresa confirmou o problema dois dias depois e publicou a correção em 23 de fevereiro de 2026.

A solução foi tecnicamente simples: substituir a concatenação direta de dados na consulta SQL pela função wpdb->prepare(), que trata corretamente os parâmetros antes de enviá-los ao banco de dados.

A vulnerabilidade foi corrigida na versão 4.1.0 do plugin. Sites que ainda utilizam versões até a 4.0.3 permanecem vulneráveis e devem atualizar o quanto antes.

Em segurança digital, esse tipo de falha mostra um detalhe curioso: às vezes não é preciso quebrar criptografia nem invadir servidores sofisticados. Basta um pequeno erro na forma como um dado é inserido em uma consulta de banco de dados para transformar um simples campo de URL em uma porta aberta para o sistema inteiro.