PostgreSQL publie des mises à jour qui corrigent le bug libpq

postgreSQL

Il ya quelques jours, PostgreSQL a annoncé la publication de mises à jour correctives pour toutes les branches prises en charge de PostgreSQL (versions 17.3, 16.7, 15.11, 14.16 et 13.19). Ces mises à jour, qui corrigent plus de 70 erreurs et surtout éliminent la vulnérabilité identifiée comme CVE-2025-1094, lié à une attaque qui a touché BeyondTrust et le département du Trésor américain fin décembre.

Vulnérabilité a été détecté lors de l'analyse d'un autre défaut distant (CVE-2024-12356) dans les services BeyondTrust PRA (Privileged Remote Access) et BeyondTrust RS (Remote Support), et a été exacerbé par la présence d'une vulnérabilité jusqu'alors inconnue (0-day) dans la bibliothèque libpq.

Sur la vulnérabilité qui a affecté BeyondTrust

Il est mentionné que l'échec dans PostgreSQL originaire de libpq, la bibliothèque qui Fournit l'API pour interagir avec PostgreSQL à partir de programmes écrits en C, qui est également la base des liaisons en C++, Perl, PHP et Python.

La La vulnérabilité réside dans la mauvaise gestion de la validation des caractères Unicode. dans des fonctions d’échappement cruciales. Ces fonctions sont essentielles pour neutraliser les caractères spéciaux dans les requêtes SQL et éviter les injections de code. Cependant, l'absence de validation appropriée permet à certaines séquences multi-octets UTF-8 non valides de contourner la normalisation des guillemets.

méthode d'attaque

Cet échec permet le remplacement SQL dans les applications qui utilisent ces fonctions pour traiter les requêtes, en particulier lorsque les requêtes sont soumises via l'utilitaire de ligne de commande psql. Par exemple, cette vulnérabilité peut être exploitée pour exécuter des commandes arbitraires sur le serveur via la substitution de ligne de commande « ! », comme démontré avec un exemple où l'utilitaire « id » a été invoqué.

L'exploit repose sur l'utilisation d'un caractère UTF-8 non valide composé des octets 0xC0 et 0x27. L'octet 0x27 correspond à un guillemet simple en ASCII, qui serait normalement échappé pour éviter les problèmes d'injection SQL. Mais lorsqu'elle est combinée avec 0xC0, la séquence est interprétée comme un seul caractère Unicode, laissant le guillemet simple sans échappement.

Impact de l'attaque

En raison de cette vulnérabilité, le Les attaquants ont réussi à obtenir une clé d'accès à l'API utilisé pour fournir une assistance à distance via les services SaaS BeyondTrust. Avec cette clé, a pu réinitialiser les mots de passe et compromettre l'infrastructure du département du Trésor américain., accéder aux documents confidentiels et aux postes de travail des employés. L'attaque a révélé de graves failles dans la chaîne de sécurité, soulignant l'importance de disposer de mécanismes de validation d'entrée robustes dans des bibliothèques critiques telles que libpq.

Mises à jour et mesures correctives

Avant ce panorama, L'équipe PostgreSQL a implémenté des mises à jours qui corrigent cette vulnérabilité et un certain nombre de bugs supplémentaires. La solution réside dans l’amélioration de la validation des caractères dans les fonctions d’échappement, garantir que toute séquence UTF-8 est traitée correctement et empêcher qu'une seule citation soit mal interprétée.

En plus de cela, comme déjà mentionné, cette mise à jour corrige plus de 70 bugs qui ont été signalés au cours des derniers mois :

  • Correction de la réutilisation possible de résultats obsolètes dans les agrégats de fenêtres, ce qui pouvait conduire à des résultats incorrects.
  • Divers correctifs de conditions de course pour le vide qui pourraient, dans le pire des cas, provoquer la corruption d'un catalogue système.
  • Divers correctifs pour tronquer les tables et les index afin d'éviter une éventuelle corruption.
  • Solution de contournement pour détacher une partition lorsque sa propre contrainte de clé étrangère fait référence à une table partitionnée.
  • Correction des codes de format FFn (par exemple FF1) vers_timestamp, où un code de format entier avant FFn consommerait tous les chiffres disponibles.
  • Corrections pour SQL/JSON et XMLTABLE() pour mettre des guillemets doubles autour d'entrées spécifiques lorsque cela est nécessaire.
  • Inclure l'option ldapscheme dans pg_hba_file_rules().
  • Divers correctifs pour UNION, notamment la non-fusion des colonnes avec des classements non pris en charge.
  • Plusieurs correctifs pouvant affecter la disponibilité ou la vitesse de démarrage d'une connexion à PostgreSQL.
  • Corrige plusieurs fuites de mémoire dans la sortie de décodage logique.
  • Corrige plusieurs fuites de mémoire dans PL/Python.
  • Correction d'une fuite de mémoire pg_restore avec des données compressées zstd.
  • Correction de pg_basebackup pour gérer correctement les fichiers pg_wal.tar supérieurs à 2 Go sous Windows.
  • Correction d'un crash dans pageinspect dans les cas où la définition de la fonction brin_page_items() n'est pas mise à jour vers la dernière version.
  • Corrige la condition de concurrence lors de la tentative d'annulation d'une requête postgres_fdw distante.

Enfin, si vous souhaitez en savoir plus, vous pouvez consulter les détails dans la lien suivant


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.