무슨 일이 있었나
1.1.0 이전에는 read_only 연결의 query_database 도구가 인식되지 않는 문장을 바인드 매개변수 없이 pgx Exec를 통해 전달할 수 있었으며, 이는 단순 쿼리 프로토콜(다중 문장)을 선택하여 데이터 수정을 방지하는 읽기 전용 강제를 우회했습니다.
왜 중요한가
AI/RAG 배포에서 MCP 서버는 에이전트 워크플로우의 데이터베이스 쓰기 경로입니다. 이 우회는 에이전트(또는 이를 조종하는 간접 프롬프트 주입)가 의도적으로 읽기 전용 DB 역할이 구성된 경우에도 쓰기를 수행할 수 있게 합니다.
공격 경로
read_only 연결의 query_database는 인식되지 않는 문장을 바인드 매개변수 없이 pgx Exec를 통해 전달하여 PostgreSQL의 단순 쿼리 프로토콜을 선택하고 읽기 전용 강제를 우회할 수 있었습니다.
영향받는 시스템
pgedge-postgres-mcp < 1.1.0
완화 방안
pgedge-postgres-mcp 1.1.0으로 업그레이드하세요. 최소 권한 DB 역할을 사용하세요. MCP 연결에서 예상치 못한 쓰기를 모니터링하세요.