Resumen ejecutivo
Nuestro equipo de investigación de seguridad ha descubierto que CVE-2022-31631una vulnerabilidad crítica de inyección SQL con una puntuación puntuación CVSS 3 de 9.1afecta a instalaciones PHP 7 (en Windows y Linux) a pesar de que los avisos oficiales sólo mencionan versiones PHP 8+. Esta vulnerabilidad de alta gravedad permite a los atacantes eludir la desinfección SQL en el controlador SQLite de PDO, lo que puede llevar a comprometer la base de datos. Particularmente preocupante es el momento de esta revelación, que se produjo poco después de que PHP 7 alcanzara su estado de Fin de Vida (EOL), dejando a muchas organizaciones vulnerables sin parche oficial disponible.
Explicación de la vulnerabilidad
CVE-2022-31631 es un grave fallo de seguridad que afecta a la función PDO::quote() cuando se utiliza con bases de datos SQLite. Cuando esta función se suministra con una cadena demasiado larga, se produce un desbordamiento de enteros, haciendo que el controlador sanee incorrectamente los datos. Este saneamiento incorrecto puede llevar a:
- Vulnerabilidades de inyección SQL
- Acceso no autorizado al contenido de la base de datos
- Manipulación o destrucción de datos
- Posibilidad de comprometer todo el sistema
- Condiciones de denegación de servicio
La criticidad de esta vulnerabilidad se refleja en su puntuación CVSS de 9,1, que la clasifica como un riesgo "Crítico" que exige atención inmediata.
PHP 7: Vulnerable e ignorado
El aviso oficial de CVE-2022-31631 sólo menciona estas versiones afectadas:
- PHP 8.0x antes de 8.0.27
- PHP 8.1x antes de 8.1.15
- PHP 8.2x antes de 8.2.2
Sin embargo, nuestras exhaustivas pruebas de seguridad han confirmado que las instalaciones de la serie PHP 7 también son vulnerables a este fallo de inyección SQL. Esto crea una brecha de seguridad significativa para las organizaciones que aún ejecutan PHP 7, como:
- PHP 7 alcanzó el estado EOL poco antes de que se revelara esta vulnerabilidad
- No hay parches oficiales disponibles de los mantenedores de PHP
- La vulnerabilidad afecta a una funcionalidad de base de datos de uso común
Detalles técnicos y escenario del ataque
La vulnerabilidad se produce en el mecanismo de citas del controlador SQLite de PDO. Cuando una aplicación utiliza la función PDO::quote() para desinfectar la entrada del usuario antes de incluirla en una consulta SQL (una práctica de seguridad común), la función no gestiona correctamente cadenas extremadamente largas.
He aquí una explicación simplificada de cómo podría desarrollarse un ataque:
- Un atacante identifica una aplicación web usando PHP con PDO SQLite
- Suministran una cadena inusualmente larga a un campo de entrada vulnerable
- La aplicación pasa esta cadena a PDO::quote() para su limpieza
- Debido a un desbordamiento de enteros, la función quoting no escapa correctamente la cadena
- La entrada malformada da lugar a una inyección SQL, lo que permite al atacante ejecutar comandos SQL arbitrarios.
Por ejemplo, una aplicación vulnerable podría contener código similar a:
// Vulnerable código patrón $usuarioEntrada = $_POST['user_input']; // Controlado por el atacante entrada $db = nuevo PDO('sqlite:base de datos.sqlite'); $entradaSegura = $db->quote($userInput); // Vulnerable cuando entrada es extremadamente larga consulta = "SELECT * FROM usuarios WHERE nombre = $safeInput";
En este escenario, si $userInput excede una cierta longitud, la desinfección falla, permitiendo potencialmente la inyección SQL a pesar del intento del desarrollador de utilizar prácticas de seguridad adecuadas.
Factores de amplificación del riesgo
Varios factores hacen que esta vulnerabilidad sea especialmente preocupante:
- Puntuación CVSS alta (9.1): Indica un problema de seguridad crítico con un impacto potencial grave.
- Calendario de divulgación: Publicado poco después de PHP 7 alcanzó EOL, dejando a los usuarios sin un camino oficial para la remediación
- Funcionalidad común: PDO es ampliamente utilizado para operaciones de base de datos en aplicaciones PHP
- Falsa sensación de seguridad: Los desarrolladores creen que se protegen contra la inyección SQL utilizando PDO::quote().
- Conocimiento limitado: La mayoría de los boletines de seguridad no mencionan la vulnerabilidad de PHP 7.
Nuestra solución: Soporte de ciclo de vida infinito para PHP 7
Reconociendo la naturaleza crítica de esta vulnerabilidad y su impacto en los usuarios de PHP 7, nuestra empresa proporciona:
- Paquetes PHP 7 parcheados: Hemos desarrollado y probado a fondo paquetes PHP 7 que corrigen la vulnerabilidad CVE-2022-31631.
- Soporte multiplataforma: Nuestros paquetes parcheados están disponibles para entornos Windows y Linux.
- Amplia cobertura de seguridad: Nuestro soporte ampliado cubre no sólo esta vulnerabilidad, sino todos los problemas de seguridad conocidos que afectan a PHP 7.
Estrategias de mitigación recomendadas
Si su organización utiliza PHP 7 con PDO SQLite, recomendamos las siguientes acciones inmediatas:
- Aplique nuestros parches de seguridad: Instale nuestros paquetes PHP 7 parcheados para protegerse de esta vulnerabilidad.
- Utilizar consultas parametrizadas: Cambie a sentencias preparadas PDO en lugar de confiar en la función quote():
$stmt = $db->prepare("SELECT * FROM usuarios WHERE nombre = ?");$stmt->execute([$userInput]);
- Validación de la longitud de la entrada: Restrinja la longitud de las entradas del usuario a valores razonables.
- Considerar los permisos de la base de datos: Aplicar el principio del menor privilegio a los usuarios de la base de datos
Conclusión
CVE-2022-31631 representa una tormenta perfecta de factores de riesgo para la seguridad: una vulnerabilidad crítica de inyección SQL, revelada justo después de que PHP 7 alcanzara el estado EOL, que afecta a un mecanismo de seguridad común en el que confían los desarrolladores. Las organizaciones que ejecutan PHP 7 se enfrentan a una difícil elección entre la migración inmediata (con posibles problemas de compatibilidad) o continuar ejecutando sistemas vulnerables.
Nuestros servicios ampliados de soporte de PHP 7 ofrecen una tercera opción: continuar ejecutando sus aplicaciones PHP 7 con confianza, sabiendo que vulnerabilidades críticas de seguridad como CVE-2022-31631 han sido solucionadas por nuestros parches de seguridad.

