CVE-2026-87911 – Amazon awslabs postgres-mcp-server の SQL 検証コンポーネントでオペレーティングシステムコマンドを実行できるようにする読み取り専用の強制バイパス
速報 ID: 2026-104-AWS
対象範囲: AWS
コンテンツタイプ: 重要 (要注意)
発行日: 2026 年 9 月 9 日 12 時 30 分 (PDT)
説明:
awslabs.postgres-mcp-server は Postgres MCP サーバーを実装する Python パッケージです。AWS は CVE-2026-87911 を検出しました。この問題では、1.1.7より前の Amazon awslabs postgres-mcp-server の SQL 検証コンポーネントの読み取り専用の強制における OS コマンドインジェクションの弱点により、認証されていないアクターが、認証済みのユーザーが MCP サーバーとやり取りするとき、処理中のコンテンツに細工された COPY ...TO PROGRAM ステートメントを配置することによってセルフマネージド型 PostgreSQL サーバーのホスト上でオペレーティングシステムコマンドを実行する可能性があります。
影響を受けるバージョン:
1.1.7 より前の awslabs.postgres-mcp-server、セルフマネージド型 PostgreSQL デプロイプロファイル (PG_WIRE_PROTOCOL 接続方法)。これらのバージョンでは、設定済みのデータベースロールは、スーパーユーザーまたは pg_execute_server_program が保持されます。
解決方法:
この問題は pypi の awslabs postgres-mcp-server (python パッケージ) バージョン 1.1.7 で対処されています。
回避策:
最も強力な対策は、実際に必要な権限のみを付与した専用の PostgreSQL ロールを使用して MCP サーバーに接続することです。これにより、どのような SQL が送信されても、データベース自体によって権限の境界が適用されます。特に、以下の点に注意してください。
- スーパーユーザー、rds_superuser、またはクラスターマスターユーザーとして接続しないでください。これらのロールは行レベルセキュリティをバイパスし、認証情報カタログ (pg_authid、pg_user_mappings) を読み取り、他のセッションを終了できます。
- 読み取り専用で使用する場合は、エージェントが必要とするスキーマに対してのみ、CONNECT、USAGE、SELECT の権限を付与し、ロールレベルで読み取り専用トランザクションを強制してください。
- 読み書き可能な用途では、必要なスキーマおよびテーブルに対象を限定し、必要な INSERT、UPDATE、DELETE 権限のみを付与してください。
最小権限ロール (データベースによる適用) とブロックリスト (アプリケーションによる適用) を組み合わせることで、多層防御を実現できます。ブロックリストをすり抜けたクエリであっても、ロールの権限によって実行可能な操作が制限されます。
参考情報:
謝辞:
協調的脆弱性開示プロセスを通じてこの問題について協力してくださった Mordehai Attia (Corsen AI) 氏および Ryan von Brubeck 氏に感謝いたします。
セキュリティに関する質問や懸念がある場合は、aws-security@amazon.com までメールでお問い合わせください。