무슨 일이 있었나
1.1.0 이전에는 사용자 정의 pl-do 도구가 JSON 인자를 이스케이프 없이 고정 달러 따옴표로 구분된 문자열에 연결하여 PostgreSQL DO 블록을 구성했습니다. 달러 따옴표 태그를 포함한 조작된 인자가 따옴표 영역을 이탈하여 MCP 클라이언트가 연결 권한으로 실행되는 SQL을 주입할 수 있었습니다.
왜 중요한가
MCP 클라이언트는 일반적으로 LLM 에이전트입니다. 여기서 SQL 주입은 프롬프트 기반 도구 호출을 연결된 역할에 대한 임의 DB 접근으로 전환하여, 에이전트(또는 해당 에이전트를 겨냥한 프롬프트 주입)가 의도된 도구 계약을 넘어 데이터베이스 콘텐츠를 읽거나 수정할 수 있게 합니다.
공격 경로
사용자 정의 pl-do 도구는 JSON 인자를 고정 달러 따옴표 태그로 구분된 PostgreSQL DO 블록에 보간했습니다. 구분 기호 토큰을 포함한 인자가 따옴표를 종료하고 연결된 데이터베이스 역할로 임의 SQL을 주입할 수 있었습니다.
영향받는 시스템
pgedge-postgres-mcp < 1.1.0 (사용자 정의 pl-do 도구)
완화 방안
pgedge-postgres-mcp 1.1.0으로 업그레이드하세요. MCP 서버 접근을 신뢰된 클라이언트로 제한하세요. 데이터베이스 역할을 최소 권한으로 제한하세요.