CVE-2026-17351
pgAdmin 4: sqlparse/PostgreSQL 렉서 불일치를 통한 AI 어시스턴트 읽기 전용 트랜잭션 우회 (CVE-2026-12045 불완전한 수정)
- 게시됨
- 2026. 7. 31.
- 업데이트됨
- 2026. 8. 1.
- CNA 할당 중
- PostgreSQL
- 증거 관찰됨
- 2026. 8. 8.
pgAdmin 4: sqlparse/PostgreSQL 렉서 불일치를 통한 AI 어시스턴트 읽기 전용 트랜잭션 우회 (CVE-2026-12045 불완전한 수정)
nvd · CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X낮음 · 다음 30일
EPSS는 통계적 추정치이지 확실성이나 영향의 척도가 아닙니다. 이를 CVSS, KEV 상태, 노출 및 환경과 결합하세요.
CVE-2026-12045에 대한 pgAdmin 4 9.16의 수정 사항은 AI 어시스턴트의 execute_sql_query 도구에 전달되는 LLM 제공 쿼리가 BEGIN TRANSACTION READ ONLY 래퍼 내에서 실행되기 전에 sqlparse를 통해 정확히 하나의 비트랜잭션 제어 문으로 파싱되도록 요구했습니다. sqlparse의 문자열 리터럴 어휘 분석은 PostgreSQL 자체 파서와 일치하지 않을 수 있습니다. standard_conforming_strings = on(PostgreSQL 9.1 이후 기본값)에서 따옴표 바로 앞의 백슬래시는 PostgreSQL에게 일반 문자이지만, sqlparse는 이를 따옴표를 이스케이프하는 것으로 처리합니다. 따라서 SELECT '\';COMMIT;CREATE TABLE pwn(x int);SELECT 1 --' 같은 페이로드는 sqlparse 검증기에는 단일 SELECT로 파싱되지만, PostgreSQL은 이를 네 개의 문으로 실행합니다. 밀반입된 COMMIT이 래핑된 읽기 전용 트랜잭션을 종료하고, 뒤따르는 ROLLBACK은 no-op이 됩니다. 이는 CVE-2026-12045가 차단하려 했던 것과 동일한 쓰기/RCE 우회를 다시 유발하며, 동일한 간접 프롬프트 주입 전달 방식(공격자가 AI 어시스턴트가 읽을 수 있는 모든 객체에 페이로드를 심고, LLM이 이를 도구 호출로 출력)을 통해 도달 가능합니다. 초기 후보 수정은 psycopg의 execute(..., prepare=True)로 쿼리를 실행하여 sqlparse의 분류와 관계없이 PostgreSQL 자체 Parse 단계(확장 쿼리 프로토콜)가 다중 문 텍스트를 거부하도록 강제하려 했습니다. 이 후보 수정은 제출된 대로 작동하지 않습니다. psycopg3의 PrepareManager는 연결의 prepare_threshold가 None일 때마다 prepare 인수를 조용히 무시하는데, 이는 모든 서버 연결에 대한 pgAdmin의 기본값입니다(관리자가 명시적으로 설정하지 않는 한 서버별 "Prepare threshold" 필드는 비어 있음). psycopg3는 단순 쿼리 프로토콜로 대체되며, 이는 우회가 악용하는 것과 동일한 다중 문 지원 경로이므로 후보 수정은 실제 기본 구성에서 아무것도 차단하지 못합니다. 수정된 수정은 AI 어시스턴트 도구가 여는 전용 단일 사용 읽기 전용 연결에 conn.prepare_threshold = 0을 직접 설정하여 서버 수준 구성과 무관하게 구조적으로 확장 쿼리 프로토콜을 강제합니다. 실제 PostgreSQL 18 인스턴스에서 검증됨: 페이로드는 prepare_threshold=None(기본값) 동작에서 성공적으로 실행되며, 해당 연결에 prepare_threshold=0이 설정되면 "cannot insert multiple commands into a prepared statement"로 거부됩니다. 이 문제는 pgAdmin 4: 9.13부터 9.17 이전 버전에 영향을 미칩니다.
pgAdmin 4의 AI 어시스턴트에서 sqlparse/PostgreSQL 렉서 차이를 통한 CVE-2026-17351 SQL 인젝션 우회를 시연하는 개념 증명(Proof-of-concept)으로, 간접 프롬프트 인젝션 전달을 포함합니다.
귀하가 소유하고 있거나 테스트할 권한이 있는 시스템에 대해서만 취약점 정보를 사용하십시오. Kitploit은 공개 연구 메타데이터에 연결되며 익스플로잇 코드나 악성 페이로드를 저장하지 않습니다.