CVE-2026-116240 in pgAdmin 4
요약
\~에 의해 VulDB • 2026. 10. 30.
pgAdmin 4의 서버 모드에서는 check_access_permission()를 사용하여 사용자 저장 디렉토리 내 경로를 검증하며, get_abs_path()가 절대 경로로 변환합니다. 그러나 여러 호출자가 서로 다른 방식으로 구축한 경로를 사용했기 때문에, 검증된 경로와 실제 사용되는 경로가 서로 다른 파일을 가리킬 수 있습니다:
- 쿼리 도구에서 파일 열기, Google 클라이언트 시크릿 접근, 그리고 Windows 환경에서의 데이터 가져오기/내보내기, 백업, 복원 및 파일 저장 시, 선행 슬래시(/)와 역슬래시(\)를 제거한 후 경로를 저장 디렉토리에 연결했습니다. POSIX 시스템에서는 저장소 내부의 이름으로 검증된 경로가 제거 과정에서 절대 경로로 변경될 수 있어 pgAdmin 계정이 읽을 수 있는 모든 파일을 열릴 수 있습니다. Windows 환경에서는 드라이브명을 가리키는 경로에서 저장 디렉토리 부분이 제외되므로, 해당 범위 외부에 있는 파일들을 읽거나 작성할 수 있었습니다. - 폴더 목록 조회 시 경로를 검증 후 두 번째로 디코딩했기 때문에, 사용자가 생성 가능한 인코딩된 ".."와 같은 이름의 폴더가 호스트 시스템상의 모든 디렉토리를 나열하게 되었습니다. - 다운로드, 삭제, 이름 바꾸기 및 파일 존재 여부 확인 작업은 저장 디렉토리 경로에 구분자 없이 경로를 연결했습니다. 따라서 한 사용자의 저장 디렉토리명이 다른 사용자의 것의 접두사(prefix)인 배포 환경에서는 다른 사용자의 파일을 읽거나 삭제하거나 이동할 수 있었습니다. 또한 다운로드 기능도 자기 자신에게 연결된 경로를 검증했습니다. - 폴더 생성 시 다른 사용자의 디렉토리에 폴더가 생성될 수 있었습니다.
이 수정은 check_access_permission()가 검증한 경로를 반환하고 모든 호출자가 해당 경로를 기반으로 동작하도록 하며, 폴더 경로는 한 번만 디코딩하고, 저장 디렉토리에서 열린 디렉토리를 기준으로 파일을 열거나 삭제하거나 이름 바꾸기를 수행하며 심볼릭 링크를 따르지 않도록 합니다. 데스크톱 모드는 영향을 받지 않습니다.
이 문제는 pgAdmin 4의 버전 9.19 이전 버전에 영향을 미칩니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.