
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êtesINSERT .. VALUES
où il y a plusieurs lignes dansVALUES
; - 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
vautcontent
, 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 échecsfsync
etsync_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 unUPDATE
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.