CVE-2022-31631 (CVSS 9.1): Falha crítica no PHP expõe Sites a ataques de SQL Injection
- Cyber Security Brazil
- 17 de fev.
- 2 min de leitura

Uma vulnerabilidade grave foi descoberta no PHP, potencialmente expondo sites e aplicações a ataques de SQL Injection. Usuários são fortemente recomendados a atualizar para as versões mais recentes do PHP o mais rápido possível.
A falha, identificada como CVE-2022-31631 (CVSS 9.1), afeta as versões 8.0.x antes da 8.0.27, 8.1.x antes da 8.1.15 e 8.2.x antes da 8.2.2. O problema ocorre na função PDO::quote() ao ser utilizada com bancos de dados SQLite. Essa função é amplamente usada para sanitizar dados fornecidos pelos usuários antes de serem utilizados em consultas ao banco de dados, uma etapa essencial para prevenir SQL Injection.
O CVE-2022-31631 surge devido a um problema de estouro de inteiro (integer overflow). Quando uma string excessivamente longa é passada para a função PDO::quote(), pode haver falha na escape adequada da entrada, permitindo a criação de consultas SQL malformadas. Isso possibilita que hackers injetem código malicioso e, potencialmente, assumam o controle do banco de dados.
O problema central está na forma como o PHP lida com os tamanhos das strings. Enquanto a função sqlite3_snprintf() do SQLite usa um inteiro de 32 bits para os parâmetros de tamanho, a PDO::quote() do PHP utiliza um zend_long, que geralmente é 64 bits em sistemas modernos. Essa diferença pode causar um estouro de inteiro, resultando em strings escapadas de forma inadequada.
Em determinados cenários, esse estouro pode fazer com que a função retorne um apóstrofo simples, anulando a sanitização pretendida e abrindo caminho para a SQL Injection. Embora configurações como limites de memória e post_max_size possam reduzir o impacto, elas não são uma defesa confiável contra essa vulnerabilidade.
Sistemas 32 bits são teoricamente menos suscetíveis devido à paridade de tamanho entre os inteiros e o zend_long, mas arquiteturas 64 bits estão especialmente vulneráveis. Testes demonstram como essa falha pode ser explorada nesses sistemas.
Essa vulnerabilidade representa um grave risco para qualquer aplicação que utilize as versões afetadas do PHP com bancos de dados SQLite. A SQL Injection é uma ameaça crítica que pode permitir que hackers roubem dados sensíveis, modifiquem informações no banco de dados ou até assumam o controle do servidor.
Portanto, é fundamental que todos os usuários do PHP realizem imediatamente a atualização para as versões corrigidas: PHP 8.0.27, 8.1.15 ou 8.2.2 (ou posteriores). Administradores de sites e desenvolvedores devem revisar seu código para garantir que práticas adequadas de sanitização de dados estejam implementadas, mesmo após a atualização.
Via - SOI
Comments