Passer au contenu principal

CVE-2026-87911 – Contournement de l’application du mode lecture seule permettant l’exécution de commandes du système d’exploitation dans le composant de validation SQL d’Amazon awslabs.postgres-mcp-server

ID du bulletin : 2026-104-AWS
Portée : AWS
Type de contenu : important (nécessite une attention particulière)
Date de publication : 09/09/2026 à 12 h 30 PDT (heure d’été du Pacifique)

Description :

awslabs.postgres-mcp-server est un package Python qui implémente un serveur MCP Postgres. Nous avons identifié CVE-2026-87911, une faiblesse d’injection de commandes du système d’exploitation dans l’application du mode lecture seule du composant de validation SQL d’Amazon awslabs.postgres-mcp-server avant la version 1.1.7, qui pourrait permettre à un acteur non authentifié d’exécuter des commandes du système d’exploitation sur l’hôte d’un serveur PostgreSQL autogéré en insérant une instruction COPY ... TO PROGRAM spécialement conçue dans du contenu traité lorsqu’un utilisateur authentifié interagit avec le serveur MCP dans son mode lecture seule par défaut.

Versions concernées :

awslabs.postgres-mcp-server avant la version 1.1.7, profil de déploiement PostgreSQL autogéré (méthode de connexion PG_WIRE_PROTOCOL), lorsque le rôle de base de données configuré dispose des privilèges de superutilisateur ou pg_execute_server_program.

Résolution :

Ce problème a été résolu dans awslabs.postgres-mcp-server (package Python) version 1.1.7 sur PyPI.

Solutions de contournement :

La mesure de contrôle la plus efficace consiste à connecter le serveur MCP à l’aide d’un rôle Postgres dédié qui dispose uniquement des privilèges dont il a réellement besoin, afin que la base de données elle-même impose cette limite, quel que soit le code SQL qui lui parvient. Prêtez une attention particulière aux points suivants :

  • Ne vous connectez pas en tant que superutilisateur, rds_superuser ou utilisateur principal du cluster. Ces rôles contournent la sécurité au niveau des lignes, peuvent lire les catalogues d’informations d’identification (pg_authid, pg_user_mappings) et peuvent mettre fin à d’autres sessions.
  • Pour une utilisation en lecture seule, accordez uniquement CONNECT + USAGE + SELECT sur les schémas dont l’agent a besoin et imposez des transactions en lecture seule au niveau du rôle.
  • Pour une utilisation en lecture/écriture, accordez uniquement les privilèges INSERT/UPDATE/DELETE requis, en les limitant aux schémas et aux tables nécessaires.

L’association d’un rôle à privilèges minimaux (appliqué par la base de données) et de la liste de blocage (appliquée par l’application) assure une défense en profondeur : même si une requête échappe à la liste de blocage, les privilèges du rôle limitent toujours les opérations possibles.

Références :

Remerciements :

Nous tenons à remercier Mordehai Attia (Corsen AI) et Ryan von Brubeck pour leur collaboration sur ce problème dans le cadre du processus coordonné de divulgation des vulnérabilités.


Veuillez envoyer un e-mail à l’adresse aws-security@amazon.com pour toute question ou préoccupation en matière de sécurité.