PostgreSQL - CVE-2026-19888

Date de publication :

Il s'agit d'une vulnérabilité de validation manquante d'un attribut obligatoire dans l'analyseur du message client-final SCRAM.

PgBouncer est un pooler de connexions léger pour PostgreSQL. Il regroupe et réutilise les connexions ouvertes vers une ou plusieurs bases de données PostgreSQL afin de réduire la charge liée à l'établissement répété de nouvelles connexions.

Ce parseur ne vérifie pas la présence du nonce dans le message final envoyé par le client lors de l'échange d'authentification SCRAM. Un message malformé, dépourvu de ce nonce, fait croire au parseur que l'échange a réussi tout en laissant une valeur requise non initialisée. Cette valeur est ensuite déréférencée comme un pointeur NULL, ce qui provoque le plantage du processus. Le déclenchement survient avant toute vérification d'identifiants, y compris pour un compte inexistant, car PgBouncer exécute un échange SCRAM simulé même dans ce cas. PgBouncer traitant l'ensemble de ses clients depuis un processus unique, ce plantage interrompt l'intégralité des connexions poolées en cours.

Elle permet à un attaquant distant non authentifié de provoquer un déni de service complet du service de pooling.

Informations

La faille est activement exploitée : Non

Un correctif existe : Oui

Une mesure de contournement existe : Non

Risques

Déni de service (à distance)

Exploitation

La vulnérabilité exploitée est du type
CWE-476 : NULL Pointer Dereference

Détails sur l'exploitation
•   Vecteur d'attaque : Réseau
•   Complexité de l'attaque : Faible
•   Privilèges nécessaires pour réaliser l'attaque : Aucun
•   Interaction d'un utilisateur ayant accès au produit est-elle nécessaire : Non
•   L'exploitation de la faille permet d'obtenir des droits privilégiés : En attente d’information

Preuve de concept
Actuellement, aucune preuve de concept n'est disponible en sources ouvertes.

Systèmes ou composants affectés

PgBouncer versions 1.25.2 et antérieures. Le changelog officiel précise que le défaut sous-jacent existe depuis l'introduction du support SCRAM en version 1.11.0.

Solutions ou recommandations

Toutes branches confondues : version 1.26.0 et supérieures