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

E.20. Version 8.1.4

[Note]

Date de sortie

2006-05-23

Cette version contient quelques corrections de la 8.1.3 incluant des correctifs pour des problèmes de sécurité extrêmement sérieux. Pour plus d'informations sur les nouvelles fonctionnalités de la version majeure 8.1, voir Section E.24, « Version 8.1 ».

E.20.1. Migration vers la version 8.1.4

Une sauvegarde/restauration n'est pas requise pour ceux utilisant une version 8.1.X. Néanmoins, si vous mettez à jour à partir d'une version antérieure à la 8.1.2, voir les notes de sortie de la 8.1.2.

Assurer une sécurité complète contre les attaques par injection SQL décrites dans CVE-2006-2313 et CVE-2006-2314 peuvent demander des modifications dans le code de l'application. Si vous avez des applications embarquant des chaînes non sûres dans des commandes SQL, vous devriez les examiner aussi rapidement que possible pour vous assurer qu'elles utilisent les techniques d'échappement recommandées. Dans la plupart des cas, les applications devraient utiliser des sous-routines fournies par des bibliothèques ou des pilotes (comme PQescapeStringConn() de libpq) pour réaliser l'échappement des chaînes plutôt que de se fier à un code ad hoc.

E.20.2. Modifications

  • Modification du serveur pour qu'il rejette les caractères multi-octets mal codés dans tous les cas (Tatsuo, Tom)

    Bien que PostgreSQL™ va dans cette direction depuis un certain temps, les vérifications sont maintenant appliquées uniformément à tous les codages et toutes les entrées de texte. Ce sont maintenant des erreurs, et non plus des messages d'avertissement. Ce changement sert à se défendre contre les attaques à base d'injection SQL du type décrit dans CVE-2006-2313.

  • Rejette des utilisations non sûres de \' dans les chaînes

    En tant que défense côté serveur contre les attaques de type injection SQL décrit dans CVE-2006-2314, le serveur accepte maintenant seulement '' et plus \' comme représentation d'un guillemet simple ASCII dans des chaînes SQL. Par défaut, \' est rejetté seulement quand client_encoding est configuré avec un codage client seul (SJIS, BIG5, GBK, GB18030 ou UHC), qui est le scénario dans lequel l'injection SQL est possible. Un nouveau paramètre de configuration backslash_quote est disponible pour ajuster ce comportement si nécessaire. Notez qu'une sécurité complète contre CVE-2006-2314 pourrait nécessiter des modifications du côté client ; le but de backslash_quote est en partie de rendre évident que les clients non sécurisés sont non sécurisés.

  • Modification des routines d'échappement de texte de libpq pour le rendre conscient des considérations de codage

    Ceci corrige les applications utilisant libpq pour les problèmes de sécurité décrits dans CVE-2006-2313 et CVE-2006-2314. Les applications qui utilisent les connections concurrentes multiples de PostgreSQL™ devraient migrer vers PQescapeStringConn() et PQescapeByteaConn() pour s'assurer que l'échappement est réalisé correctement pour les paramétrages utilisés dans chaque connexion de base de données. Les applications qui font des échappements de chaînes « à la main » devraient être modifiées pour se fier à aux routines de la bibliothèques à la place.

  • Correction de la sélection d'une clé faible dans pgcrypto (Marko Kreen)

    Des erreurs dans la logique de ré-échantillonage de PRNG peuvent causer la sélection d'une clé de session prévisible par pgp_sym_encrypt() dans certains cas. Ceci affecte seulement les constructions n'utilisant pas OpenSSL.

  • Correction de quelques fonctions de conversion de codage

    win1251_to_iso, alt_to_iso, euc_tw_to_big5, euc_tw_to_mic, mic_to_euc_tw étaient toutes cassées à différents niveaux.

  • Nettoyage des utilisations restantes et parasites de \' dans les chaînes (Bruce, Jan)

  • Make autovacuum visible in pg_stat_activity (Alvaro)

  • Déasctivation de full_page_writes (Tom)

    Dans certains cas, désactiver full_page_writes sera la cause d'un échec de la récupération après un arrêt brutal. Une meilleure correction sera disponible en 8.2 ; maintenant, on ne fait que la désactiver.

  • Corrections diverses sur le planificateur, en particulier pour les parcours d'index bitmap et l'optimisation de MIN/MAX (Tom)

  • Correction d'une mauvaise optimisation dans les jointures de fusion (Tom)

    Les jointures externes peuvent quelque fois émettre plusieurs copies de lignes sans correspondance.

  • Correction d'un arrêt brutal lors de l'utilisation et de la modification d'une fonction plpgsql dans la même transaction

  • Correction d'un replay WAL pour le cas où un index B-Tree a été tronqué

  • Correction de SIMILAR TO pour les modèles impliquant | (Tom)

  • Correction de SELECT INTO et CREATE TABLE AS pour créer des tables dans le tablespace par défaut, et non pas dans le répertoire base (Kris Jurka)

  • Correction du serveur pour qu'il utilise les paramètres personnalisés DH SSL correctement (Michael Fuhr)

  • Amélioration des performances de qsort (Dann Corbit)

    Actuellement, ce code est seulement utilisé sur Solaris.

  • Correction de Bonjour pour les Intel Macs (Ashley Clark)

  • Correction de quelques pertes mémoires mineures

  • Correction d'un problème pour la demande du mot de passe sur certaines systèmes Win32 (Robert Kinberg)

  • Amélioration de la gestion des valeurs par défaut dans les domaines pour pg_dump

  • Correction de pg_dumpall pour gérer raisonnablement les utilisateurs et les groupes nommés de façon identique (uniquement possible lors d'une sauvegarde d'un serveur de version antérieure à la 8.1) (Tom)

    L'utilisateur et le groupe seront assemblés en un seul rôle avec le droit LOGIN. Auparavant, le rôle créé n'avait pas le droit LOGIN le rendant inutilisable en tant que rôle de connexion.

  • Correction de l'option -n de pg_restore pour qu'elle fonctionne comme sa description dans la documentation (Tom)