Skip to content

PostgreSQL corrige CVE-2026-6460, une RCE de type confusion vieille de 22 ans

La mise à jour PostgreSQL du 12 novembre corrige CVE-2026-6460 (CVSS 8.8) : un utilisateur pouvant créer des objets exécute du code en tant que compte système, parmi 53 CVE au total.

Publié le 3 min de lecture

PostgreSQL a publié ses mises à jour trimestrielles le 12 novembre, corrigeant CVE-2026-6460 — une faille de type confusion qui permet à un utilisateur capable de créer des objets d'exécuter du code arbitraire sous le compte système qui fait tourner le serveur. Score CVSS 8.8. La cause remonte à un commit de 2004. Si vous opérez PostgreSQL et laissez des comptes non-superutilisateur créer des objets, patchez maintenant.

Ce que fait la faille

Selon l'avis PostgreSQL pour CVE-2026-6460, le serveur suivait mal les valeurs typées : une valeur n'était pas auto-identifiante, si bien qu'une valeur périmée d'un type pouvait ensuite être relue comme si elle avait un autre type. Ces valeurs périmées pouvaient subsister dans le dictionnaire de données, dans des variables PL/pgSQL et ailleurs.

Le vecteur principal est ALTER ... SET DATA TYPE, mais l'avis signale d'autres chemins DDL :

ALTER TABLE ... ADD COLUMN; ROLLBACK; ALTER TABLE ... ADD COLUMN

Le vecteur CVSS est AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H : accessible via le réseau, complexité faible, mais nécessitant un compte autorisé à créer ou modifier des objets.

Versions affectées et corrigées

Le CERT-FR (CERTFR-2026-AVI-1530) liste 53 identifiants CVE, dont CVE-2026-6460, et recense les versions corrigées :

  • 15.20, 16.16, 17.12, 18.7 — toutes les versions antérieures sont affectées.
  • 19 RC 2 pour la future branche 19.
  • 14.25 : dernière version de la branche 14, qui atteint sa fin de vie. Le correctif est dans cette version, mais migrez vers une branche supportée après l'avoir appliquée.

Les risques couverts par l'avis vont au-delà de la seule RCE : déni de service à distance, atteinte à la confidentialité, contournement de la politique de sécurité et injection SQL. Appliquer les binaires ne suffit pas pour CVE-2026-6460 : la protection complète impose aussi de recompiler les extensions en langage C installées sur le serveur, celles compilées contre d'anciennes versions restant chargeables sans être pleinement protégées.

Statut d'exploitation

Aucune exploitation dans la nature n'est signalée, et la faille n'est pas au catalogue KEV de la CISA. Le prérequis — un compte pouvant créer des objets — la tient hors de portée des scanners pré-authentification, mais elle vise directement les bases multi-tenant, le PostgreSQL managé qui distribue des droits CREATE, et tout contexte où des rôles applicatifs définissent des objets.

Que faire

  1. Appliquez la mise à jour correspondant à votre branche (18.7 / 17.12 / 16.16 / 15.20 / 14.25) issue de la publication du 12 novembre.
  2. Recompilez les extensions en langage C après la mise à jour ; un serveur patché avec une extension non recompilée peut rester exposé.
  3. Auditez les droits de création d'objets. Révoquez CREATE sur les schémas pour les rôles qui n'en ont pas besoin.
  4. Priorisez les instances multi-tenant et managées, où des rôles non fiables détiennent couramment ces droits.

Contexte

Il s'agit d'une faille du cœur du serveur, distincte des vulnérabilités PostgreSQL-adjacentes couvertes récemment comme l'injection SQL PostgreSQL de Drupal. Ici, c'est le moteur lui-même. Les 22 ans de latence tiennent au prérequis d'authentification et de création d'objets : c'est ce qui a permis à la faille de passer inaperçue, et c'est aussi ce qui fait varier l'urgence du correctif selon la générosité avec laquelle vous distribuez CREATE.

Articles liés