CVE-2021-3110: SQL injection no PrestaShop — módulo productcomments no controlador CommentGrade
PrestaShop e CVE-2021-3110: explico a falha de SQL injection em módulo productcomments no controlador CommentGrade, o impacto real, as versões afetadas e os passos para corrigir sem complicar a tua loja.

// nesta página (8)
Se tens uma loja PrestaShop, há uma diferença entre estar a correr uma versão antiga e estar realmente exposto a uma falha concreta. A CVE-2021-3110 é um aviso de segurança relacionado com módulo productcomments no controlador CommentGrade. Vou explicar o que foi identificado, que condições importam e como podes agir sem transformar uma atualização numa dor de cabeça.
O que aconteceu?
O parâmetro id_products[] no processo de classificação de comentários podia alimentar SQL injection cega baseada em tempo.
O problema foi identificado numa funcionalidade associada ao PrestaShop. A presença do ponto de entrada, os direitos necessários e a configuração podem alterar a exposição, por isso não convém tratar todas as instalações como iguais.
O detalhe técnico: como funciona a falha
Uma SQL injection aparece quando um valor recebido por HTTP acaba por influenciar a estrutura de uma query, em vez de ser tratado apenas como dado. No PrestaShop, importa olhar para controladores de módulos, consultas executadas com Db::getInstance() e parâmetros usados em filtros, identificadores ou ordenações. Um cast para inteiro pode ser útil para IDs, mas não resolve campos livres nem substitui parametrização e listas fechadas para nomes de colunas.
A expressão «blind SQL injection» significa que a aplicação não precisa de mostrar o resultado da query: diferenças de resposta ou de tempo já podem revelar informação. O alcance real depende das permissões atribuídas ao utilizador MySQL/MariaDB, dos dados presentes e do ponto de entrada.
Qual é o impacto real?
Em determinadas condições, o problema pode permitir acesso não autorizado a registos de clientes, encomendas ou configurações; dependendo das permissões da base de dados, pode haver alteração de informação. Isso não significa que a loja já tenha sido atacada, nem que todas as instalações possam ser exploradas da mesma forma. A gravidade depende da versão, da configuração, da autenticação necessária e dos direitos que o processo tem no servidor.
Também convém distinguir o alcance do núcleo da aplicação do alcance de um módulo de terceiros: uma falha numa extensão não transforma automaticamente todas as lojas PrestaShop em alvos vulneráveis.
Que versões estão afetadas?
- Componente: módulo productcomments no controlador CommentGrade
- Versões abrangidas no registo: 1.7.7.0
- Versão de correção: não confirmada
- Divulgação do registo: 2021-01-20
Estes dados servem para fazer a primeira triagem. Se usas overrides, patches próprios ou versões personalizadas, verifica também o código realmente instalado. O número de versão apresentado no back office nem sempre conta a história toda.
Como corrigir a CVE-2021-3110?
- Inventaria a instalação. Regista a versão do PrestaShop, a versão do módulo quando aplicável e o ambiente PHP. Confirma se usas módulo productcomments no controlador CommentGrade.
- Compara as versões. O registo refere como afetadas: 1.7.7.0. Cruza este dado com o aviso do fabricante: condições especiais podem limitar o impacto.
- Cria um backup completo. Inclui ficheiros, base de dados e configurações, e ensaia a intervenção numa cópia de staging quando possível.
- Aplica a correção. Não encontrei uma versão corrigida suficientemente bem documentada para a indicar com segurança neste registo. Não é prova de que não exista correção. Confirma com o fabricante, verifica o changelog do módulo e, se necessário, desativa temporariamente a funcionalidade afetada até teres um patch validado.
- Testa o que interessa. Valida login, carrinho, checkout, área de cliente, back office, emails e integrações usadas pela loja.
- Revê a exposição anterior. Não basta a correção funcionar; se a falha esteve acessível, olha para os logs e para alterações inesperadas.
Como saber se houve uma tentativa de exploração?
Revê os logs HTTP do controlador referido e procura padrões anómalos em parâmetros de pesquisa, ordenação ou identificadores. Cruza os pedidos com o slow query log e os registos do MariaDB/MySQL, se existirem. Um pedido suspeito não é, por si só, prova de exfiltração.
Se utilizas Cloudflare ou outra WAF, considera-a uma camada de mitigação: não substitui a atualização do código vulnerável.
Ponto de atenção para developers
A verificação do código deve começar no componente indicado acima. Segue a origem dos dados recebidos por HTTP (Tools::getValue(), pedidos AJAX, uploads ou headers), identifica onde entram numa operação sensível e confirma se existem validações no servidor. Verifica também se os overrides e módulos próprios reintroduzem o mesmo padrão, mesmo depois de aplicar o patch oficial.
E se não quiser mexer sozinho na loja?
Uma intervenção segura não é apenas clicar em «atualizar». É perceber as dependências, preparar rollback, aplicar o patch adequado e garantir que o negócio continua a funcionar.
Queres que verifique e resolva esta vulnerabilidade na tua loja PrestaShop? Posso analisar as versões e os módulos, validar a exposição, aplicar as correções e testar as funcionalidades principais. Fala comigo e vemos a melhor forma de tratar disso, com calma e sem alarmismos.
Nota editorial: o conteúdo explica a informação pública disponível e não constitui prova de exploração da tua loja. Sempre que o aviso não confirma uma versão corrigida, essa limitação é assinalada expressamente.
// Fontes
- Registo CVE — CVE-2021-3110 cve.org ↗
- PrestaShield — base de vulnerabilidades PrestaShop prestashield.com ↗