🔍 CVE-2026-17347

7.5
CVSS Score
HIGH
2026-07-31
2026-10-23 23:10
✅ 완료

🇰🇷 한글 설명

pgAdmin 4 7.2 이상 9.17 미만에서 MASTER_PASSWORD_HOOK 설정의 %u 치환 시 사용자명이 셸 명령어에 직접 삽입되어, 인증된 사용자가 셸 메타문자를 포함한 사용자명으로 pgAdmin 서비스 계정 권한의 임의 명령을 실행할 수 있습니다. 수정본은 설정 문자열을 argv로 분할한 뒤 shell=False로 실행하여 사용자명을 단일 인자로 제한합니다.

💡 쉬운 설명

사용자 이름에 특수 문자를 넣어 서버에서 원하는 명령을 실행할 수 있는 취약점입니다. 업데이트하면 사용자 이름이 단순한 문자열로만 처리되어 이 공격이 차단됩니다.

🇺🇸 원문 (English)

The MASTER_PASSWORD_HOOK setting, introduced in pgAdmin 4 7.2, lets an administrator configure an external command that returns a per-user encryption key, with %u in the configured string replaced by the current user's name. The previous implementation substituted the username directly into the command string and executed the result with subprocess.Popen(..., shell=True). Because the username can originate from an external authentication source (OAuth/OIDC claims, Kerberos, webserver auth) rather than a value pgAdmin fully controls, a username containing shell metacharacters (';', '$()', backticks, pipes, '&&', newlines) allowed an authenticated user to execute arbitrary commands as the pgAdmin service account in any deployment where the configured hook string uses %u. Fix tokenises the trusted, administrator-configured hook string into an argument vector first (using shlex in POSIX-quoting mode, with backslash-escaping disabled so Windows-style paths are not mis-parsed), substitutes the untrusted username into the individual argv elements, and executes with shell=False. The username is therefore always confined to a single argv element; any shell metacharacters it contains are inert. Administrators whose MASTER_PASSWORD_HOOK previously relied on shell features (pipes, redirection, environment-variable expansion, globbing) within the hook string itself must move that logic into the invoked script, since it is no longer interpreted by a shell. This issue affects pgAdmin 4: from 7.2 before 9.17.

📍 영향받는 시스템

pgAdmin 4 7.2 이상 9.17 미만, MASTER_PASSWORD_HOOK 설정에 %u를 사용하는 환경

⚔️ 공격 벡터

외부 인증(OAuth/OIDC, Kerberos 등)을 통해 인증된 사용자가 셸 메타문자를 포함한 사용자명으로 임의 명령을 실행

🛡️ 대응 방법

pgAdmin 4를 9.17 이상으로 업데이트하고, 기존에 셸 기능(파이프, 리다이렉션 등)에 의존하던 훅 로직은 호출되는 스크립트 내부로 옮기기

🔧 검증 코드

출력된 버전이 9.17 이상이면 패치 적용됨, 7.2 이상 9.17 미만이면 취약한 버전이므로 업데이트 필요

Shell / Script
pip show pgadmin4 2>/dev/null | grep -i '^version'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Windows Shell