Saltar al contenido principal

CVE-2026-87911: Omisión de la aplicación de solo lectura que permite ejecutar comandos del sistema operativo en el componente de validación de SQL de Amazon awslabs postgres-mcp-server

ID del boletín: 2026-104-AWS
Alcance: AWS
Tipo de contenido: Importante (requiere atención)
Fecha de publicación: 09/09/2026 12:30 h PDT

Descripción:

awslabs.postgres-mcp-server es un paquete de Python que implementa un servidor MCP de Postgres. Detectamos la vulnerabilidad CVE-2026-87911, en la que una debilidad en la inyección de comandos del sistema operativo en la aplicación de solo lectura del componente de validación de SQL en Amazon awslabs postgres-mcp-server antes de la versión 1.1.7 podía permitir que un actor no autenticado ejecutara comandos del sistema operativo en el host de un servidor de PostgreSQL autoadministrado mediante la inserción de una instrucción COPY... TO PROGRAM especialmente diseñada en contenido que se procesa cuando un usuario autenticado interactúa con el servidor MCP en su modo de solo lectura predeterminado.

Versiones afectadas:

awslabs.postgres-mcp-server antes de la versión 1.1.7, perfil de implementación de PostgreSQL autoadministrado (método de conexión PG_WIRE_PROTOCOL) donde el rol de base de datos configurado es superusuario o pg_execute_server_program.

Resolución:

Este problema se solucionó en la versión 1.1.7 de awslabs postgres-mcp-server (paquete Python) en pypi.

Soluciones alternativas:

El control más eficaz es conectar el servidor MCP mediante un rol de Postgres dedicado que solo tenga los privilegios que realmente necesita, de modo que sea la propia base de datos la que imponga el límite, independientemente del SQL que llegue a ella. En particular:

  • No se conecte como superusuario, rds_superuser o usuario maestro del clúster. Estos roles eluden la seguridad de la fila, pueden leer los catálogos de credenciales (pg_authid, pg_user_mappings) y pueden terminar otras sesiones.
  • Para uso de solo lectura, conceda únicamente CONNECT + USAGE + SELECT en los esquemas que el agente necesite y haga que las transacciones de solo lectura se apliquen mediante el rol.
  • Para el uso de lectura y escritura, conceda únicamente los privilegios específicos de INSERT/UPDATE/DELETE necesarios, limitados a los esquemas y las tablas indispensables.

Combinar un rol con privilegios mínimos (impuesto por la base de datos) con la lista de bloqueo (impuesta por la aplicación) le proporciona defensa en profundidad: aunque una consulta eluda la lista de bloqueo, los privilegios del rol seguirán limitando lo que puede hacer.

Referencias:

Reconocimiento:

Queremos dar las gracias a Mordehai Attia (Corsen AI) y a Ryan von Brubeck por colaborar en este problema a través del proceso coordinado de divulgación de vulnerabilidades.


Si tiene alguna pregunta o duda sobre seguridad, envíe un correo electrónico a aws-security@amazon.com.