PHP 7 vulnérable à une grave faille d'injection SQL CVE-2022-31631

Les correctifs php2shell (CVE-2026-109618 et CVE-2026-109619) pour les versions de PHP en fin de vie sont désormais disponibles. Les réponses du service commercial étant plus lentes que d'habitude en raison d'une forte demande, le moyen le plus rapide d'obtenir les paquets corrigés est d'acheter ELS for Runtimes en ligne (s'ouvre dans un nouvel onglet). Consulter la FAQ sur les correctifs

Accédez directement au résumé généré par l'IA de cet article de blog

  • Résumez cet article avec Perplexity
  • Résume cet article avec Gemini

Résumé

 

Notre équipe de recherche en sécurité a découvert que CVE-2022-31631une vulnérabilité critique d'injection SQL avec un CVSS 3 de 9.1Cette vulnérabilité affecte les installations PHP 7 (sur Windows et Linux), bien que les avis officiels ne mentionnent que les versions PHP 8+. Cette vulnérabilité de haute sévérité permet aux attaquants de contourner la vérification SQL dans le pilote PDO SQLite, conduisant potentiellement à la compromission de la base de données. Le moment choisi pour la divulgation de cette faille est particulièrement inquiétant, puisqu'il intervient peu de temps après que PHP 7 ait atteint son statut de fin de vie (EOL), laissant de nombreuses organisations vulnérables sans correctif officiel disponible.

La vulnérabilité expliquée

 

CVE-2022-31631 est une faille de sécurité sérieuse qui affecte la fonction PDO::quote() lorsqu'elle est utilisée avec des bases de données SQLite. Lorsque cette fonction est fournie avec une chaîne de caractères trop longue, un débordement d'entier se produit, provoquant une mauvaise vérification des données par le pilote. Cette mauvaise vérification peut conduire à :

  1. Faille d'injection SQL
  2. Accès non autorisé au contenu de la base de données
  3. Manipulation ou destruction de données
  4. Risque de compromettre l'ensemble du système
  5. Conditions de refus de service

La criticité de cette vulnérabilité se reflète dans son score CVSS de 9,1, qui la classe dans la catégorie des risques "critiques" exigeant une attention immédiate.

PHP 7 : vulnérable et négligé

 

L'avis officiel pour CVE-2022-31631 ne mentionne que les versions concernées :

  • PHP 8.0x avant 8.0.27
  • PHP 8.1x avant 8.1.15
  • PHP 8.2x avant 8.2.2

Cependant, nos tests de sécurité complets ont confirmé que les installations de la série PHP 7 sont également vulnérables à cette faille d'injection SQL. Cela crée une faille de sécurité importante pour les organisations qui utilisent encore PHP 7 :

  1. PHP 7 a atteint le statut EOL peu de temps avant que cette vulnérabilité ne soit révélée.
  2. Aucun correctif officiel n'est disponible auprès des mainteneurs de PHP
  3. La vulnérabilité affecte une fonctionnalité de base de données couramment utilisée

Détails techniques et scénario d'attaque

 

La vulnérabilité se produit dans le mécanisme de citation du pilote PDO SQLite. Lorsqu'une application utilise la fonction PDO::quote() pour assainir les entrées utilisateur avant de les inclure dans une requête SQL (une pratique de sécurité courante), la fonction ne parvient pas à gérer correctement les chaînes de caractères extrêmement longues.

Voici une explication simplifiée du déroulement d'une attaque :

  1. Un attaquant identifie une application web utilisant PHP avec PDO SQLite
  2. Ils fournissent une chaîne de caractères anormalement longue dans un champ de saisie vulnérable
  3. L'application transmet cette chaîne à PDO::quote() pour qu'elle soit nettoyée.
  4. En raison d'un débordement d'entier, la fonction de citation n'échappe pas correctement la chaîne de caractères
  5. L'entrée malformée entraîne une injection SQL, ce qui permet à l'attaquant d'exécuter des commandes SQL arbitraires.

Par exemple, une application vulnérable peut contenir un code similaire à :


// Code vulnérable code modèle

$userInput = $_POST['user_input'] ; // Entrée contrôlée par l'attaquant entrée

$db = nouveau PDO('sqlite:database.sqlite') ;

$safeInput = $db->quote($userInput) ; // Vulnérable lorsque entrée est extrêmement longue

$query = "SELECT * FROM utilisateurs WHERE nom = $safeInput" ;

 

Dans ce scénario, si $userInput dépasse une certaine longueur, la vérification échoue, ce qui peut permettre une injection SQL malgré les efforts du développeur pour utiliser des pratiques de sécurité appropriées.

Facteurs d'amplification du risque

 

Plusieurs facteurs rendent cette vulnérabilité particulièrement préoccupante :

  1. Score CVSS élevé (9.1): Indique un problème de sécurité critique avec un impact potentiel sévère.
  2. Délai de divulgation: Publiée peu après la fin de vie de PHP 7, laissant les utilisateurs sans voie officielle de remédiation.
  3. Fonctionnalité commune: PDO est largement utilisé pour les opérations de base de données dans les applications PHP.
  4. Faux sentiment de sécurité: Les développeurs pensent qu'ils se protègent contre les injections SQL en utilisant PDO::quote().
  5. Sensibilisation limitée: La plupart des bulletins de sécurité ne mentionnent pas la vulnérabilité de PHP 7.

Notre solution : Support du cycle de vie sans fin pour PHP 7

 

Reconnaissant la nature critique de cette vulnérabilité et son impact sur les utilisateurs de PHP 7, notre société fournit :

  1. Paquet de correctifs pour PHP 7: Nous avons développé et testé minutieusement des paquets PHP 7 qui corrigent la vulnérabilité CVE-2022-31631.
  2. Support multiplateforme: Nos paquets corrigés sont disponibles pour les environnements Windows et Linux.
  3. Couverture complète de la sécurité: Notre support étendu couvre non seulement cette vulnérabilité, mais aussi tous les problèmes de sécurité connus affectant PHP 7.

Stratégies d'atténuation recommandées

 

Si votre organisation utilise PHP 7 avec PDO SQLite, nous recommandons les actions immédiates suivantes :

  1. Appliquer nos correctifs de sécurité: Installez nos paquets PHP 7 corrigés pour vous protéger contre cette vulnérabilité.
  2. Utiliser des requêtes paramétrées: Passez aux instructions préparées PDO au lieu de vous fier à la fonction quote() :

$stmt = $db->prepare("SELECT * FROM utilisateurs WHERE nom = ?");$stmt->execute([$userInput]) ;

  1. Mise en œuvre de la validation de la longueur des entrées: Limiter la longueur des entrées de l'utilisateur à des valeurs raisonnables.
  2. Tenir compte des autorisations de la base de données: Appliquer le principe du moindre privilège aux utilisateurs de la base de données

 

Conclusion

 

CVE-2022-31631 représente une tempête parfaite de facteurs de risque de sécurité : une vulnérabilité critique d'injection SQL, divulguée juste après que PHP 7 ait atteint le statut EOL, affectant un mécanisme de sécurité commun sur lequel les développeurs s'appuient. Les organisations qui utilisent PHP 7 sont confrontées à un choix difficile entre une migration immédiate (avec des problèmes potentiels de compatibilité) et le maintien de systèmes vulnérables.

Nos services étendus de support PHP 7 offrent une troisième option : continuer à exécuter vos applications PHP 7 en toute confiance, en sachant que les vulnérabilités de sécurité critiques telles que CVE-2022-31631 ont été corrigées par nos correctifs de sécurité.

 

Résumé
PHP 7 vulnérable à une grave faille d'injection SQL CVE-2022-31631
Nom de l'article
PHP 7 vulnérable à une grave faille d'injection SQL CVE-2022-31631
Description
CVE-2022-31631, une vulnérabilité critique d'injection SQL avec un score CVSS 3 de 9.1, affecte les installations PHP 7. En savoir plus sur notre découverte
Auteur
Nom de l'éditeur
de TuxCare
Logo de l'éditeur

Rejoignez plus de 4 500 professionnels de Linux et de l'Open Source!

2 fois par mois. Pas de spam.

Table des matières
Obtenez les réponses à vos questions sur la sécurité des logiciels libres

Rejoignez plus de 4 500 professionnels de Linux et de l'Open Source!

2 fois par mois. Pas de spam.