Passa al contenuto principale

CVE-2026-87911 - Aggiramento dell’imposizione della modalità di sola lettura che consente l’esecuzione di comandi del sistema operativo nel componente di convalida SQL di Amazon awslabs postgres-mcp-server

ID bollettino: 2026-104-AWS
Ambito: AWS
Tipo di contenuto: importante (richiede attenzione)
Data di pubblicazione: 09/09/2026 12:30 PDT

Descrizione:

awslabs.postgres-mcp-server è un pacchetto python che implementa un server MCP per Postgres. Abbiamo identificato la vulnerabilità CVE-2026-87911, in cui una debolezza di tipo OS command injection relativa ai vincoli di sola lettura del componente di convalida SQL in Amazon awslabs postgres-mcp-server, per le versioni precedenti alla 1.1.7, potrebbe permettere a un’entità non autenticata di eseguire comandi del sistema operativo sull’host di un server PostgreSQL autogestito. Questa operazione avviene inserendo un’istruzione COPY ... TO PROGRAM creata ad hoc all’interno di contenuti che vengono elaborati nel momento in cui un profilo autenticato interagisce con il server MCP nella sua modalità di sola lettura predefinita.

Versioni interessate:

versioni di awslabs.postgres-mcp-server precedenti alla 1.1.7, profilo di distribuzione PostgreSQL autogestita (metodo di connessione PG_WIRE_PROTOCOL) in cui il ruolo del database configurato contiene superuser o pg_execute_server_program.

Risoluzione:

questo problema è stato risolto nella versione 1.1.7 di awslabs postgres-mcp-server (pacchetto python) in pypi.

Soluzioni alternative:

il controllo più efficace consiste nel connettere il server MCP utilizzando un ruolo Postgres dedicato che dispone solo dei privilegi effettivamente necessari, in modo che il database stesso imponga il limite indipendentemente da quale SQL lo raggiunge. In particolare:

  • Non connettersi come superutente, rds_superuser o utente master del cluster. Questi ruoli aggirano la sicurezza a livello di riga, possono leggere i cataloghi delle credenziali (pg_authid, pg_user_mappings) e possono terminare altre sessioni.
  • Per l’uso in sola lettura, concedere solo CONNECT + USAGE + SELECT sugli schemi necessari all’agente, e forzare le transazioni di sola lettura a livello di ruolo.
  • Per l’uso in lettura/scrittura, concedere solo i privilegi INSERT/UPDATE/DELETE specifici richiesti, relativi alle esigenze degli schemi e delle tabelle necessari.

La combinazione di un ruolo con privilegi minimi (applicato dal database) con la blocklist (applicata dall’applicazione) offre una difesa profonda: anche nell’eventualità in cui una query sfugga alla blocklist, i privilegi del ruolo ne limiteranno comunque le azioni.

Riferimenti:

Ringraziamenti:

desideriamo ringraziare Mordehai Attia (Corsen AI) e Ryan von Brubeck per aver collaborato alla risoluzione di questo problema attraverso il processo di divulgazione coordinata delle vulnerabilità.


Inviare un’e-mail all’indirizzo aws-security@amazon.com per eventuali domande o dubbi sulla sicurezza.