Paris, le 12 novembre 2021

Le PostgreSQL Global Development Group a publié une mise à jour pour toutes les versions prises en charge de notre système de base de données, dont 14.1, 13.5, 12.9, 11.14, 10.19 et 9.6.24. Cette version comble deux vulnérabilités de sécurité et corrige plus de 40 bugs signalés au cours des trois derniers mois.

De plus, il s’agit de la version finale de PostgreSQL 9.6. Si vous utilisez PostgreSQL 9.6 dans un environnement de production, nous vous suggérons de prévoir une mise à niveau.

Pour la liste complète des changements, veuillez consulter les notes de mise à jour.

Correctifs de sécurité

  • CVE-2021-23214 : Injection de bits non chiffrés dans les processus serveurs lors d’une attaque « man-in-the-middle »

Versions concernées : 9.6 - 14. L’équipe de sécurité ne teste généralement pas les versions non prises en charge, mais ce problème est assez ancien.

Lorsqu’un serveur est configuré en mode trust avec un prérequis clientcert ou une authentification par certificat, un attaquant de type « man-in-the-middle » peut injecter du code SQL arbitraire quand une nouvelle connection est établie, malgré la validité du certificat SSL et du chiffrement des échanges.

Le projet PostgreSQL remercie Jacob Champion pour avoir signalé ce problème.

  • CVE-2021-23222 : Injection de bits non chiffrés dans les processus client (libpq) lors d’une attaque « man-in-the-middle »

Versions concernées : 9.6 - 14. L’équipe de sécurité ne teste généralement pas les versions non prises en charge, mais ce problème est assez ancien.

Une attaque « man-in-the-middle » peut injecter des réponses erronées aux premières requêtes d’un client, malgré l’utilisation d’un certificat SSL pour l’authentification et le chiffrement des échanges.

Si plusieurs conditions préalables sont réunies, l’attaquant peut exfiltrer le mot de passe du client ou d’autres données confidentielles qui pourraient être transmises au début d’une session. L’attaquant doit avoir un moyen de tromper le serveur prévu par le client afin de rendre les données confidentielles accessibles à l’attaquant. Une implémentation connue ayant cette propriété est une configuration PostgreSQL vulnérable à CVE-2021-23214.

Comme pour les exploits de la vulnérabilité CVE-2021-23214, le serveur doit disposer d’une authentification trust avec un prérequis clientcert ou d’une authentification cert. Pour exfiltrer le mot de passe, le client doit être en possession dudit mot de passe, ce qui est peut fréquent dans le cas d’une configuration d’authentification concernée par la vulnérabilité CVE-2021-23214. L’attaquant doit user d’autres méthodes pour accéder au serveur afin de récupérer les données exfiltrées (un rôle valide et sans privilège particulier peut être suffisant).

Le projet PostgreSQL remercie Jacob Champion pour avoir signalé ce problème.

Corrections de bogues et améliorations

Cette mise à jour corrige plus de 40 bugs qui ont été signalés au cours des derniers mois. Les problèmes listés ci-dessous affectent PostgreSQL 14. Certains de ces problèmes peuvent également affecter d’autres versions supportées de PostgreSQL. Certains de ces correctifs comprennent :

  • Correction de la réplication physique pour les cas ou le primaire tombe en panne après avoir envoyé un segment WAL qui se termine par un enregistrement WAL partiel. Lorsque vous appliquez cette mise à jour, mettez à jour vos serveurs de secours avant le primaire afin qu’ils soient prêt à gérer la correction si le primaire tombe en panne.
  • Correction du VACUUM parallèle pour qu’il traite les index inférieurs au seuil min_parallel_index_scan_size si la table a au moins deux index qui sont supérieurs à cette taille. Ce problème n’affecte pas l’autovacuum. Si vous êtes affecté par ce problème, vous devez réindexer toutes les tables nettoyées manuellement.
  • Correction des causes de l’écriture d’index corrompus par CREATE INDEX CONCURRENTLY et REINDEX CONCURRENTLY. Vous devez réindexer tous les index créés de manière concurrente.
  • Correction pour attacher/détacher une partition qui pouvait permettre à certaines requêtes INSERT/UPDATE de mal se comporter dans les sessions actives.
  • Correction sur la création de type range avec CREATE TYPE pouvant causer des problèmes lors de l’exécution ultérieure d’event trigger ou de la commande CREATE TYPE.
  • Correction des mises à jour d’éléments de tableau dans un type domaine utilisé dans un type composite.
  • Interdiction de la combinaison de FETCH FIRST WITH TIES avec FOR UPDATE SKIP LOCKED.
  • Correction d’un cas particulier de perte de la précision dans la fonction power() sur le type numeric
  • Correction de la reconstruction du snapshot de type Portal au sein d’une sous-transaction, qui peut conduire à un arrêt brutal. Par exemple, dans un code PL/pgSQL, lorsqu’un COMMIT est immédiatement suivi d’un BEGIN … EXCEPTION qui exécute une requête.
  • Meilleure gestion du nettoyage au moment d’un échec de transaction survenu après son export de snapshot. Cela peut arriver lorsqu’un slot de réplication est créé puis annuler, et qu’un nouveau slot doit être créé dans la même session.
  • Correction du mécanisme de recherche des sous-transactions excédentaires sur les serveurs secondaires pouvant provoquer des dégrations de performances.
  • S’assure que les transactions préparées soient proprement pris en compte lors de la promotion d’un serveur secondaire.
  • S’assure que le bon niveau de verrou est utilisé lors du renommage d’une table.
  • Empêche un arrêt brutal lors de la suppression concurrente d’un rôle propriétaire d’objets.
  • Interdiction de paramètrer huge_pages avec la valeur on lorsque le paramètre shared_memory_type vaut sysv.
  • Correction de la vérification du type de requête dans une routine PL/pgSQL de type RETURN QUERY.
  • Plusieurs corrections pour pg_dump, notamment la capacité d’exporter correctement les privilèges par défaut non-globaux.
  • Utilisation des données du projet CLDR pour lier les noms de fuseaux horaires Windows aux zones IANA (Internet Assigned Numbers Authority).

Cette mise à jour contient également la version 2021e de tzdata pour les changements de législation DST à Fidji, en Jordanie, en Palestine et aux Samoa, ainsi que des corrections historiques pour la Barbade, les îles Cook, la Guyane, Niue, le Portugal et les Tonga.

De plus, le fuseau horaire Pacific/Enderbury a été renommé en Pacific/Kanton. Les fuseaux horaires suivants ont été fusionnés dans des fuseaux voisins, plus densément peuplés et en accord sur l’heure depuis 1970 : Africa/Accra, America/Atikokan, America/Blanc-Sablon, America/Creston, America/Curacao, America/Nassau, America/Port_of_Spain, Antarctica/DumontDUrville, and Antarctica/Syowa. Pour tous ces fuseaux, le nom de l’ancien fuseau est conservé sous forme d’alias.

Pour la liste complète des changements disponibles, veuillez consulter les notes de version.

PostgreSQL 9.6 est en fin de vie

Ceci est la version finale de PostgreSQL 9.6. Si vous utilisez PostgreSQL 9.6 dans un environnement de production, nous vous suggérons de prévoir une mise à niveau vers une version plus récente et supportée de PostgreSQL. Veuillez consulter notre politique de gestion des versions pour plus d’informations.

Mises à jour

Toutes les versions mineures de PostgreSQL sont cumulatives. Comme pour les autres versions mineures, les utilisateurs n’ont pas besoin d’exporter et restaurer leur base de données ou d’utiliser pg_upgrade pour mettre à jour vers cette version ; il suffit d’arrêter PostgreSQL et de mettre à jour ses binaires.

Les utilisateurs qui ont sauté une ou plusieurs mises à jour peuvent avoir besoin d’exécuter des étapes supplémentaires après la mise à jour ; veuillez consulter celles des versions précédentes pour plus de détails.

Liens


DALIBO

DALIBO est le spécialiste français de PostgreSQL®. Nous proposons du support, de la formation et du conseil depuis 2005.