Mises à jour de sécurité pour PostgreSQL

Par:
fredericmazue

mar, 28/02/2012 - 12:39

Le PostgreSQL Global Development Group a publié  des mises à jours de sécurité pour toutes les branches actives du SGBDR PostgreSQL. Ces mises-à-jour incluent les versions 9.1.3, 9.0.7, 8.4.11 et 8.3.18.

Il est nécessaires aux utilisateurs de pg_dump, de certificat SSL de validation, de déclencheurs utilisant SECURITY DEFINER de migrer immédiatement. Il est recommandé aux DBA de mettre à jour les versions de PostgreSQL utilisées dès la prochaine maintenance programmée.

Les fonctionnalités concernées par ces correctifs incluent : la réplication binaire et le Hot Standby, GIN, WITH, les enveloppes de données externes (Foreign Data Wrappers), PL/pgsql, PL/python, le type de données inet, intarray, pgcrypto, pg_upgrade, pg_restore et pg_dump. Il est préconisé aux utilisateurs de ces fonctionnalités d'appliquer les mises-à-jours le plus rapidement possible.

Cette version intègre 45 correctifs pour la version 9.1 et un nombre inférieur pour les versions plus anciennes, soit :

  • un correctif de corruption d'index btree lors d'insertions concurrentes à un vacuum ;
  • récupérer d'erreurs survenant lors de la répétition d'un DROP TABLESPACE depuis un WAL ;
  • correction de la mise à zéro de tampons partagés lors de la répétition de WAL ;
  • correction de la tentative du postmaster de redémarrer après un crash du hot-standby ;
  • correction des cas aux limites du nettoyage des transactions SSI ;
  • mise-à-jour des permissions de niveau colonne, pas uniquement celles de niveau table, lors du changement de propriétaire ;
  • correction de la gestion de sous-plans WITH modifiant des données lors de la revérification READ COMMITTED ;
  • correction des erreurs "could not find plan for CTE" (n'a pu trouvé de plan pour la CTE) ;
  • correction des erreurs de type non-supportées causées par un COLLATE dans une expression INSERT ;
  • éviter un crash lorsque des problèmes sont rencontrés pour supprimer les fichiers de table après commit ;
  • correction de la fuite mémoire récemment introduite lors du traitement de inet/cidr ;
  • correction de l'estimation de coût GIN pour gérer les condtions d'index des colonnes IN(...) ;
  • correction des fuites mémoires liées aux conversions I/O en plpgsql ;
  • apprendre à pg_upgrade à gérer le renommage des bibliothèques partagées plpython (affecte les mises à jours vers 9.1) ;

Comme pour toute version mineure, il n'est pas nécessaire d'exporter et réimporter les bases ou d'utiliser pg_upgrade pour appliquer cette mise-à-jour. Il suffit d'arrêter PostgreSQL et de mettre à jour les binaires. Les étapes post-update s'effectuent après redémarrage de la base.

Cette mise-à-jour inclut 3 correctifs de sécurité :

CVE-2012-0866 : Les permissions sur la fonction appelée par un déclencheur ne sont pas vérifiées.

Ce correctif interdit aux utilisateurs de définir des déclencheurs qui exécutent des fonctions pour lesquelles l'utilisateur n'a pas la permission EXECUTE.

CREATE TRIGGER échoue à vérifier les permissions sur la fonction à appeler. Un utilisateur sans privilège peut attacher une fonction déclencheur à une table qu'il possède et lui faire accéder les données qu'il souhaite. Normalement, cela s'exécute avec les permissions du propriétaire de la table, et de ce fait sans possibilité additionnel. Toutefois, si la fonction déclencheur est marquée SECURITY DEFINER, l'escalade de privilèges est possible.

CVE-2012-0867 : Les vérifications de nom de certificat SSL sont tronquées à 32 caractères, permettant l'usurpation de connexion dans certaines circonstances.

Cela corrige la coupure de nom usuelle du SSL, qui peut permettre le piratage d'une connexion SSL dans certaines conditions.

Lors de l'utilisation de certificats SSL, le client et le serveur peuvent être configurés pour vérifier le nom d'hôte adverse à partir du nom commun dans le certificat présenté. Toutefois, le nom extrait du certificat était incorrectement tronqué à 32 caractères. Normalement, cela conduit à une erreur de vérification, mais si le nom de la machine contient exactement 32 caractères, il peut, en principe, être usurpé. Le risque que cela arrive réellement est très faible, et un attaquant devra encore exécuter des opérations en dehors de PostgreSQL pour réussir un tel exploit.

CVE-2012-0868 : Les sauts de ligne dans les noms d'objet peuvent être exploités pour exécuter du code lors du chargement d'un fichier pg_dump.

Ce correctif supprime les '\n' et '\r' des commentaires d'un fichier d'export.

pg_dump copiait les noms des objets dans des commentaires au sein du script SQL sans les assainir. Un nom d'objet qui contient un saut de ligne suivi d'une commande SQL peut résulter en un script dans lequel la commande SQL est exposée à l'exécution. Lorsque (et si) le script est rechargé, la commande est exécutée avec les privilèges de celui qui exécute le script - souvent un superutilisateur.

Télécharger les nouvelles versions :

http://www.postgresql.org/download/ : Téléchargement

http://www.postgresql.org/ftp/source/ : Code source

http://www.postgresql.org/ftp/binary/ : Paquets binaires

http://www.enterprisedb.com/products/pgdownload.do : One-click installer, et paquets Windows