pgAdmin 4의 SQL 편집기 청사진에 있는 두 개의 상태 변경 끝점(DELETE /sqleditor/close/<trans_id> 및 POST /sqleditor/initialize/sqleditor/update_connection/<sgid>/<sid>/<did>)은 @pga_login_required 데코레이터가 누락된 모듈의 유일한 경로였습니다. 둘 다 session['gridData'][<trans_id>]['command_obj']에서 pickle.loads 싱크에 도달합니다. close_sqleditor_session()을 통해 종료 엔드포인트이고 check_transaction_status()를 통해 update_sqleditor_connection입니다. 서버 모드에서는 이러한 끝점에 도달했습니다.
pgAdmin 4의 SQL 편집기 청사진에 있는 두 개의 상태 변경 끝점(DELETE /sqleditor/close/<trans_id> 및 POST /sqleditor/initialize/sqleditor/update_connection///)은 @pga_login_required 데코레이터가 누락된 모듈의 유일한 경로였습니다. 둘 다 session['gridData'][<trans_id>]['command_obj']에서 pickle.loads 싱크에 도달합니다. close_sqleditor_session()을 통해 종료 엔드포인트이고 check_transaction_status()를 통해 update_sqleditor_connection입니다. 서버 모드에서는 인증된 pgAdmin 세션 없이 이러한 엔드포인트에 연결할 수 있습니다.
결함은 신뢰할 수 없는 데이터 싱크의 역직렬화(CWE-502) 주변에 있는 중요 기능에 대한 인증 누락(CWE-306) 래퍼입니다. 원격 코드 실행을 위해 이를 악용하려면 공격자가 GridData 항목에 악성 피클 페이로드가 포함된 서버 측 세션 파일을 위조해야 하며, 이는 (a) pgAdmin의 Flask SECRET_KEY(누출할 체인이 여기에 설명되어 있지 않음 - 공격자가 이미 이를 소유하고 있어야 함)에 대한 지식과 (b) 호스트의 pgAdmin의session/ 디렉터리에 대한 쓰기 액세스 권한이 모두 필요합니다. 이 결함 자체로는 전제 조건이 부여되지 않습니다. 이러한 전제 조건이 다른 채널(잘못 구성된 배포, 사전 손상, 유출된 구성)에서 충족되면 누락된 인증 게이트는 기존 부분 손상을 pgAdmin 프로세스에서 인증되지 않은 코드 실행으로 바꾸는 최종 홉입니다. 더 나아가 pgAdmin을 실행하는 모든 계정의 호스트에서 가능합니다.
Fix는 모듈의 다른 모든 경로에서 사용되는 규칙과 일치하는 두 끝점 각각에 한 줄의 @pga_login_required 데코레이터입니다. is_authenticated / MFA 체인은 이제 trans_id가 역참조되기 전에 실행되므로 역직렬화 경로에 도달하기 전에 인증되지 않은 요청이 거부됩니다.
결함은 서버 모드에서만 발생합니다. DESKTOP 모드에서 pgAdmin의 before_request 후크는 모든 요청에서 DESKTOP_USER를 다시 인증하므로 인증되지 않은 상태에서는 엔드포인트를 실행할 수 없으며 인증 데코레이터(또는 부재)는 의미가 없습니다. 함께 제공되는 회귀 테스트는 공격자의 경로를 미러링합니다. 즉, GET /login에서 X-pgA-CSRFToken을 수집하고 이를 두 엔드포인트에 대해 재생하며 이러한 이유로 서버 모드 외부에서 자체 건너뜁니다. 이는 데이터 격리 테스트와 함께 기존 서버 모드 CI 워크플로우에 연결됩니다.
이 문제는 pgAdmin 4(6.9부터 9.16까지)에 영향을 미칩니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 95.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 95.00 |
VPI 공식 vpi-v1 기준
| 소스 | CVSS 버전 | 기본 점수 | 심각도 | 벡터 문자열 | 평가일 |
|---|---|---|---|---|---|
| NVDNIST | 4.0 | 9.5 | CRITICAL | CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/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 | 2026. 06. 19. |
| NVDNIST | 3.1 |
| 9.0 |
CRITICAL |
| CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H |
| 2026. 06. 19. |