PostgreSQLLa base de données la plus sophistiquée au monde.

E.37. Version 8.1.11

[Note]

Date de sortie

2008-01-07

Cette version contient divers correctifs de la version 8.1.10, et inclut des correctifs d'importantes failles de sécurité. Pour plus d'informations sur les nouvelles fonctionnalités de la version majeure 8.1, voir Section E.48, « Version 8.1 ».

Ceci est la dernière version 8.1.X pour laquelle la communauté PostgreSQL™ produira des paquets binaires pour Windows™. Les utilisateurs Windows sont encouragés à migrer vers la version 8.2.X ou ultérieures car il existe des corrections spécifiques à Windows dans la version 8.2.X qui ne peuvent pas être portées aux anciennes versions. La 8.1.X continuera à être supportée sur les autres plateformes.

E.37.1. Migration vers la version 8.1.11

Les utilisateurs des versions 8.1.X n'ont pas besoin d'effectuer d'une étape de sauvegarde/restauration. Néanmoins, si vous mettez à jour depuis une version précédant la 8.1.2, lire les notes de version de la 8.1.2.

E.37.2. Modifications

  • Empêche les fonctions d'index de s'exécuter avec les droits de l'utilisateur exécutant VACUUM, ANALYZE, etc (Tom)

    Les fonctions utilisées dans les expressions d'index et dans les index partiels sont évaluées quand une nouvelle entrée est faite dans la table. Depuis longtemps, ceci est un risque, un cheval de Troie pouvant être exécuté si une personne modifie une table appartenant à un utilisateur à qui on ne peut faire confiance (Notez ques les triggers, valeurs par défaut, contraintes de vérification, etc posent le même type de risque.) Mais les fonctions utilisées dans des index sont un danger supplémentaire car ils seront exécutés par des opérations de maintenance périodiques comme un VACUUM FULL, opérations généralement exécutées par des super-utilisateurs. Donc, un utilisateur cherchant à gagner accès au système peut exécuter du code avec des droits de super-utilisateur en ajoutant une définition d'index avec un code de cheval de Troie, puis attendre la prochaine exécution des opérations de maintenance. La correction s'arrange pour que les opérations standards de maintenance (ceci incluant VACUUM, ANALYZE, REINDEX et CLUSTER) s'exécutent en tant que propriétaire de la table plutôt qu'en tant qu'appelent, en utilisant le même mécanisme de bascule de droits utilisé dans les fonctions SECURITY DEFINER. Pour empêcher un coutournement de cette mesure de sécurité, l'exécution de SET SESSION AUTHORIZATION et SET ROLE est maintenant interdit dans un contexte SECURITY DEFINER. (CVE-2007-6600)

  • Correction de bogues relatifs aux expressions rationnelles (Tom, Will Drewry)

    Des motifs d'expressions rationnelles conçus très précisément pourraient causer des arrêts brutaux, des boucles infinies (ou presque) et/ou une consommation massive de mémoire. Tout ceci représente un risque de déni de service pour les applications qui acceptent des motifs de recherche via des expressions rationnelles à partir de sources indignes de confiance. (CVE-2007-4769, CVE-2007-4772, CVE-2007-6067)

  • Oblige l'utilisation de l'authentification par mot de passe pour les utilisateurs standards de /contrib/dblink, c'est une mesure de sécurité (Joe)

    La correction apparue dans 8.1.10 était incomplète, car elle ne corrigeait la faille que pour certaines fonctions dblink. (CVE-2007-6601, CVE-2007-3278)

  • Mise à jour des fichiers de données de fuseaux horaires avec la version 2007k de tzdata (en particulier, les modifications récentes en Argentine) (Tom)

  • Améliore la gestion du planificateur pour les estimations de LIKE et des expressions rationnelles dans les locales autres que C (Tom)

  • Correction d'un échec du planificateur dans certaines cas de WHERE false AND var IN (SELECT ...) (Tom)

  • Préserve les paramètres du tablespace et de stockage des index qui sont reconstruits suite à un ALTER TABLE ... ALTER COLUMN TYPE (Tom)

  • Fait que la restauration d'archive commence toujours une nouvelle timeline, plutôt que ne le faire que quand une heure d'arrêt de la restauration ne soit utilisée (Simon)

    Ceci évite un risque très particulier de tentative de ré-écriture sur une copie archivée existante du dernier journal de transaction. Cela semble plus simple et plus clair que la définition originale.

  • VACUUM n'utilise pas tout maintenance_work_mem lorque la table est trop petite pour que cela est la moindre utilité (Alvaro)

  • Correction d'un arrêt brutal potentiel dans translate() lors de l'utilisation d'un encodage multi-octets de la base (Tom)

  • Correction d'un dépassement de capacité dans extract(epoch from interval) pour les intervalles excédant 68 ans (Tom)

  • Correction de PL/Perl pour qu'il n'échoue pas quand une expression rationnelle UTF-8 est utilisée dans une fonction de confiance (Andrew)

  • Correction de PL/Perl pour continuer l'exécution quand le langage Perl de la plateforme définit le type bool en tant que int plutôt qu'en tant que char (Tom)

    Bien que ceci peut arriver partout, aucune construction standard de Perl ne faisait cela... jusqu'à Mac OS X™ 10.5.

  • Correction de PL/Python pour ne pas causer un arrêt brutal sur des messages d'exception longs (Alvaro)

  • Correction de pg_dump pour qu'il gère correctement les tables héritées qui ont des expressions par défaut différentes de celles de leur parents (Tom)

  • Correction d'un crash de libpq quand PGPASSFILE fait référence à un fichier qui n'est pas un fichier texte (Martin Pitt)

  • Corrections de l'analyseur ecpg (Michael)

  • Correction réalisée pour que contrib/pgcrypto puisse se défendre contre les bibliothèques OpenSSL qui échouent sur des clés de plus de 128 bits ; ce qui est le cas sur au moins certaines versions de Solaris (Marko Kreen)

  • Correction pour que crosstab(), du module contrib/tablefunc, gère les rowid NULL comme catégorie (Joe)

  • Correction des routines d'affichage de tsvector et tsquery pour échapper correctement les antislashs (Teodor, Bruce)

  • Correction d'un arrêt brutal de to_tsvector() sur les très grosses chaînes en entrée (Teodor)

  • Nécessite l'utilisation d'une version spécifique d'Autoconf™ lors de la re-génération du script configure (Peter)

    Ceci affecte seulement les développeurs et les créateurs de package. La modification a pour but d'empêcher l'utilisation accidentelle de combinaisons non testées des versions d'Autoconf™ et de PostgreSQL™. Vous pouvez supprimer la vérification de la version si vous voulez vraiment utiliser une version différente d'Autoconf™, mais c'est de votre responsabilité.