PHP 7 vulnerable a un grave fallo de inyección SQL CVE-2022-31631

Ya están disponibles los parches de php2shell (CVE-2026-109618 y CVE-2026-109619) para PHP en fin de vida útil. Dado que las respuestas del departamento de ventas están tardando más de lo habitual debido a la elevada demanda, la forma más rápida de obtener los paquetes parcheados es comprar ELS para Runtimes en línea (se abre en una pestaña nueva). Lee las preguntas frecuentes sobre los parches

Ir directamente al resumen generado por IA de esta entrada del blog

  • Resume esta entrada con Perplexity
  • Resume esta publicación con Gemini

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:

  1. Vulnerabilidades de inyección SQL
  2. Acceso no autorizado al contenido de la base de datos
  3. Manipulación o destrucción de datos
  4. Posibilidad de comprometer todo el sistema
  5. 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:

  1. PHP 7 alcanzó el estado EOL poco antes de que se revelara esta vulnerabilidad
  2. No hay parches oficiales disponibles de los mantenedores de PHP
  3. 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:

  1. Un atacante identifica una aplicación web usando PHP con PDO SQLite
  2. Suministran una cadena inusualmente larga a un campo de entrada vulnerable
  3. La aplicación pasa esta cadena a PDO::quote() para su limpieza
  4. Debido a un desbordamiento de enteros, la función quoting no escapa correctamente la cadena
  5. 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:

  1. Puntuación CVSS alta (9.1): Indica un problema de seguridad crítico con un impacto potencial grave.
  2. 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
  3. Funcionalidad común: PDO es ampliamente utilizado para operaciones de base de datos en aplicaciones PHP
  4. Falsa sensación de seguridad: Los desarrolladores creen que se protegen contra la inyección SQL utilizando PDO::quote().
  5. 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:

  1. Paquetes PHP 7 parcheados: Hemos desarrollado y probado a fondo paquetes PHP 7 que corrigen la vulnerabilidad CVE-2022-31631.
  2. Soporte multiplataforma: Nuestros paquetes parcheados están disponibles para entornos Windows y Linux.
  3. 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:

  1. Aplique nuestros parches de seguridad: Instale nuestros paquetes PHP 7 parcheados para protegerse de esta vulnerabilidad.
  2. 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]);

  1. Validación de la longitud de la entrada: Restrinja la longitud de las entradas del usuario a valores razonables.
  2. 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.

 

Resumen
PHP 7 vulnerable a un grave fallo de inyección SQL CVE-2022-31631
Nombre del artículo
PHP 7 vulnerable a un grave fallo de inyección SQL CVE-2022-31631
Descripción
CVE-2022-31631, una vulnerabilidad crítica de inyección SQL con una puntuación CVSS 3 de 9,1, afecta a las instalaciones de PHP 7. Más información sobre nuestro descubrimiento
Autor
Nombre del editor
TuxCare
Logotipo de la editorial

Únase a más de 4.500 profesionales de Linux y el código abierto.

2 veces al mes. Sin spam.

Índice
Obtenga las respuestas de seguridad de código abierto que necesita

Únase a más de 4.500 profesionales de Linux y el código abierto.

2 veces al mes. Sin spam.