AWS는 9월 4일 13:00 PDT — 20:00 UTC에 보안 공지 2026-101을 공개하며 awslabs.postgres-mcp-serverCVE-2026-85787를 다뤘다. 공지문에는 다음과 같이 적혀 있다. "SQL 검증 구성 요소의 허용되지 않는 입력 목록이 불완전해 … 인증되지 않은 행위자가 인증된 사용자가 MCP 서버와 상호작용할 때 제출되는 콘텐츠에 조작된 SQL을 넣어 읽기 전용 범위를 넘어 데이터를 수정할 수 있다."

실제로 무엇이 잘못됐는가

문제는 데이터베이스도 아니고 모델도 아니다. 이 서버의 핵심 기능은 Aurora 인스턴스를 상대로 자연어를 SQL로 바꾸는 것이며, 쓰기 작업은 선택 사항인 --allow_write_query 플래그 뒤에 묶여 있다. 읽기 전용은 금지 문자열 목록으로 구현됐고, 그 목록이 불완전했다. GitHub는 이를 CWE-184로 분류한다. CVSS v4.0 벡터는 VC:N/VI:H로, 기밀성에는 영향이 없고 무결성 영향은 높으며, 점수는 7.1이다. CVSS v3.1 점수는 6.5다.

공격자가 누구인가

"인증되지 않은 행위자"라는 표현은 노출된 엔드포인트를 직접 두드리는 사람처럼 읽힌다. 그러나 벡터는 다르게 말한다. v4.0에서는 UI:P, v3.1에서는 UI:R이다. 공격자가 인증되지 않은 이유는 모델이 읽을 어딘가에 텍스트만 심기 때문이다. 실제 결과 SQL을 제출하는 것은 인증된 사용자의 에이전트다. 이는 데이터베이스 쓰기를 페이로드로 삼은 간접적 프롬프트 주입이며, CVE로 등록됐다. 이런 형태가 연구 결과가 아니라 제품 취약점으로 분류된 것은 처음 있는 일들 가운데 하나다.

받아들여진 해석이 놓치는 점

"1.1.7 이전"이라는 표현은 새 패치를 암시한다. 그러나 1.1.7은 6월 25일 PyPI에 올라왔고, 공지보다 71일 앞선 시점이었다. 현재 릴리스는 1.2.0이다. README의 설치 예시처럼 아무 버전도 고정하지 않은 채 따랐다면, 문제의 존재조차 모른 채 수개월 전에 이미 영향을 받았던 셈이다. 더 오래된 버전에 고정돼 있었다면, 공개 공지 없이 10주 동안 노출된 상태였던 것이다. AWS는 같은 날 또 다른 MCP 서버 CVE도 공개했다. dynamodb-mcp-server의 CVE-2026-85654로, CVSS 7.8이며, 데이터 모델 파일의 조작된 테이블 이름이 나중에 cdk deploy를 실행하는 어느 호스트에서든 코드가 된다.

구조적 핵심

신뢰할 수 없는 자연어에서 SQL을 생성하는 것이 전부인 구성 요소에서, 문자열 차단 목록으로 구현된 안전 속성은 데이터베이스가 아니라 파서에서가 아니라 데이터베이스에서 권한을 강제해야 한다는 논거다. AWS의 자체 임시 완화 지침도 결국 정확히 그 방식으로 되돌아간다.