LOXODATA

PostgreSQL 11.3 et autres correctifs

2019-05-10   1119 mots, 6 minutes de lecture

Le PGDG a publié une mise à jour de toutes les versions supportées de notre système de base de données, incluant 11.3, 10.8, 9.6.13, 9.5.17, et 9.4.22.

Cette publication corrige deux problèmes de sécurité dans le serveur PostgreSQL, un problème de sécurité trouvé dans deux des installeurs de PostgreSQL pour Windows, et plus de 60 bogues reportés ces trois derniers mois.

Les utilisateurs ayant installé PostgreSQL en utilisant les installeurs d’EntrepriseDB et BigSQL doivent procéder à la mise à jour au plus vite. De même, les utilisateurs utilisant une des versions de PostgreSQL 9.5, 9.6, 10, et 11 doivent planifier la mise à jour dès que possible.

Tous les autres utilisateurs doivent planifier l’application de cette mise à jour au prochain arrêt programmé.

Problème de sécurité

Quatre vulnérabilités de sécurité ont été fermées par cette publication :

  • CVE-2019-10127 : l’installeur BigSQL Windows ne nettoie pas les entrées d’ACL permissives ;
  • CVE-2019-10128: l’installeur EnterpriseDB Windows ne nettoie pas les entrées d’ACL permissives.

Du fait que les deux installeurs pour Windows, EnterpriseDB et BigSQL, ne verrouillent pas les permissions des répertoires d’installation des binaires et du répertoire des données, un compte utilisateur non privilégié de Windows ou un compte non privilégié de PostgreSQL peuvent faire exécuter du code arbitraire par le service PostgreSQL.

Cette vulnérabilité est présente dans toutes les versions supportées de PostgreSQL pour ces installeurs, et possiblement pour de plus vieilles versions.

Les deux installeurs ont réglé les permissions pour ces répertoires, à la fois pour les nouvelles installations et les installations existantes.

Si PostgreSQL a été installé sous Windows par une autre méthode, nous conseillons de vérifier que le répertoire d’installation des binaires de PostgreSQL ne soit accessible en écriture qu’aux utilisateurs de confiance, et que le répertoire des données ne soit accessible qu'à des utilisateurs de confiance.

Le projet PostgreSQL remercie Conner Jones d’avoir rapporté ce problème.

  • CVE-2019-10129: Divulgation de la mémoire lors du routage de données partitionnées.

Avant cette publication, un utilisateur de PostgreSQL 11 pouvait lire des octets arbitraires dans la mémoire du serveur en exécutant une requête INSERT conçue pour cela sur une table partitionnée.

  • CVE-2019-10130: Des estimations de sélectivité outrepassent les politiques de sécurité des lignes.

PostgreSQL maintient des statistiques sur les tables, en échantillonnant les données disponibles dans les colonnes ; ces données sont consultées pendant la phase de préparation du plan de la requête.

Avant cette publication, un utilisateur avec la permission de lecture sur une colonne donnée pouvait créer un opérateur pouvant lire n’importe quelle donnée ayant été échantillonnée depuis cette colonne. Si ces données incluaient des lignes que l’utilisateur ne pouvait pas lire, par la définition d’une politique de sécurité des lignes, l’utilisateur pouvait alors effectivement outrepasser cette politique. Ceci est réglé en autorisant uniquement un opérateur non étanche à utiliser la donnée s’il n’y a pas de politiques de sécurité des lignes pour la table.

Ce problème est présent dans PostgreSQL 9.5, 9.6, 10 et 11. Le projet PostgreSQL remercie Dean Rasheed d’avoir rapporté ce problème.

Corrections des bogues et améliorations

Cette mise à jour règle aussi plus de 60 bogues rapportés ces derniers mois. Certains de ces bogues n’affectent que la version 11, mais la plupart affectent toutes les versions supportées.

Parmi les problèmes réglés citons :

  • plusieurs correctifs sur la corruption du catalogue incluant un bogue relatif à l’exécution de ALTER TABLE sur une table partitionnée ;
  • plusieurs correctifs du partitionnement ;
  • évite le crash du serveur lorsqu’une erreur survient en essayant de rendre persistant un curseur à travers une validation de transaction ;
  • évite un problème de performance O(N^2) lors de l’annulation d’une transaction ayant créé de nombreuses tables ;
  • règle un problème potentiel “could not access status of transaction” dans txid_status() ;
  • règle l’utilisation de DEFAULT dans une vue utilisable en écriture dans les requêtes INSERT .. VALUES où il y a plusieurs lignes dans VALUES ;
  • règle les CREATE VIEW autorisant les vues avec zéro colonne ;
  • ajoute le support manquant pour l’ordre CREATE TABLE IF NOT EXISTS .. AS EXECUTE .. ;
  • s’assure que les sous-requêtes d’un SELECT dans une politique de sécurité des lignes sont exécutées avec les bonnes permissions ;
  • accepte les documents XML comme une valeur valide du type de données XML quand xmloption vaut content, comme requis par SQL:2006 et ultérieur ;
  • règle une incompabilité des enregistrements WAL des index GIN qui a été introduite dans 11.2, 10.7, 9.6.12, 9.5.16, et 9.4.21 affectant un serveur secondaire exécutant ces versions lisant des données des index GIN depuis un serveur primaire utilisant une version plus ancienne ;
  • plusieurs fuites mémoires et problèmes de gestion de la mémoire partagée dynamique ;
  • assouplit l'émission de message PANIC sur des échecs fsync et sync_file_range dans certains cas où l’erreur indique “operation not supported” ;
  • plusieurs correctifs du planificateur de requêtes, dont quelques-uns entrainent des améliorations des plans d’exécution ;
  • règle un problème d’exécution dans lequel un postmaster hot-standby peut échouer à s’arrêter après avoir reçu une requête d’arrêt en mode smart ;
  • règle plusieurs problèmes pour l’authentification SCRAM ;
  • règle la manipulation du paramètre lc_time impliquant un encodage différent de l’encodage de la base de données ;
  • crée le fichier current_logfiles avec les mêmes permissions que les autres fichiers du répertoire des données du serveur. ;
  • règle plusieurs problèmes de ecpg ;
  • fait que pg_verify_checksums vérifie que le répertoire des données pointées correspond à la bonne version de PostgreSQL ;
  • règle plusieurs problèmes pour contrib/postgres_fdw, incluant un problème pour les partitions distantes ou un UPDATE peut amener à des résultats incorrects ou à un crash ;
  • règle plusieurs problèmes pour Windows.

Cette mise à jour contient aussi les données tzdata de la publication 2019a pour les changements réglementaires en Palestine et Metlakatla, ainsi que des corrections historiques pour Israël. Etc/UCT est maintenant une rétrocompatibilité de Etc/UTC, au lieu d'être une zone séparée produisant l’abréviation ACT, qui est actuellement typiquement une faute de frappe. PostgreSQL accepte toujours UCT comme entrée abrégée, mais ne l’affiche plus.

Mise à jour

Toutes les publications de mises à jour de PostgreSQL sont cumulatives. Comme pour toutes les mises à jour mineures, les utilisateurs ne sont pas obligés d’extraire et de recharger les bases de données ou d’utiliser pg_upgrade pour appliquer cette mise à jour ; il suffit alors simplement d’arrêter PostgreSQL et de mettre à jour les binaires.

Les utilisateurs ayant sauté une ou plusieurs mises à jour peuvent avoir besoin d'étapes additionnelles après la mise à jour. Les notes de publication des versions précédentes fournissent les détails.

PostgreSQL 9.4 ne recevra plus de corrections de bogues à compter du 13 février 2020. Veuillez consulter la politique de version pour plus d’informations.

Liens