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 패키지입니다. Amazon awslabs postgres-mcp-server 1.1.7 이전 버전의 SQL 검증 구성 요소에서 읽기 전용 적용과 관련한 운영 체제 명령 주입 취약성 CVE-2026-87911을 발견했습니다. 이 취약성으로 인해 인증되지 않은 공격자가 조작된 COPY ... TO PROGRAM 문을 MCP 서버의 기본 읽기 전용 모드에서 인증된 사용자가 상호 작용할 때 처리되는 콘텐츠에 삽입하여 자체 관리형 PostgreSQL 서버 호스트에서 운영 체제 명령을 실행할 수 있습니다.
영향을 받는 버전:
awslabs.postgres-mcp-server 1.1.7 이전 버전, 자체 관리형 PostgreSQL 배포 프로필(PG_WIRE_PROTOCOL 연결 방법)에서 구성된 데이터베이스 역할에 수퍼유저 또는 pg_execute_server_program 권한이 있는 경우
해결 방법:
이 문제는 pypi의 awslabs postgres-mcp-server(python 패키지) 버전 1.1.7에서 해결되었습니다.
대안:
가장 강력한 제어 방법은 실제로 필요한 권한만 부여된 전용 Postgres 역할을 사용하여 MCP 서버를 연결함으로써, 어떤 SQL이 데이터베이스에 도달하더라도 데이터베이스 자체에서 경계를 적용하도록 하는 것입니다. 구체적으로는 다음과 같습니다.
- superuser, rds_superuser, 또는 cluster master user로 연결하지 마세요. 이들 역할은 행 수준 보안을 우회하고, 자격 증명 카탈로그(pg_authid, pg_user_mappings)를 읽을 수 있으며, 다른 세션을 종료할 수 있습니다.
- 읽기 전용으로 사용하려면 에이전트가 필요로 하는 스키마에 CONNECT + USAGE + SELECT 권한만 부여하고 역할 수준에서 읽기 전용 트랜잭션을 강제 적용하세요.
- 읽기/쓰기 용도로 사용하려면 필요한 스키마와 테이블에 한정하여 필요한 특정 INSERT/UPDATE/DELETE 권한만 부여하세요.
최소 권한 역할(데이터베이스 적용)과 차단 목록(애플리케이션 적용)을 결합하면 심층적인 방어가 가능합니다. 즉, 쿼리가 차단 목록을 통과하더라도 여전히 역할의 권한을 통해 수행 가능한 작업이 제한됩니다.
참고 사항:
도움을 주신 분:
조정된 취약성 공개 프로세스를 통해 이 문제 해결에 도움을 준 Mordehai Attia(Corsen AI)와 Ryan von Brubeck에 감사드립니다.
보안 관련 질문이나 우려 사항이 있는 경우 이메일(aws-security@amazon.com)을 통해 문의하세요.