🇰🇷 한글 설명
WordPress용 Pronamic Pay 플러그인 10.1.0 버전 이하에서 권한 상승 취약점이 발견되었습니다. `maybe_update_user_role()` 함수가 Gravity Forms의 필드 값을 검증 없이 `WP_User::set_role()`에 직접 전달하여, 인증된 공격자가 관리자 권한을 획득할 수 있습니다.
💡 쉬운 설명
로그인한 일반 사용자가 설문지 양식을 조작하여 웹사이트의 최고 관리자 권한을 몰래 뺏어올 수 있는 보안 결함입니다. 관리자가 특정 설정을 켜두었을 경우, 공격자가 자신의 등급을 마음대로 바꿀 수 있습니다.
🇺🇸 원문 (English)
The Pronamic Pay plugin for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 10.1.0 This is due to the `maybe_update_user_role()` function passing an attacker-controlled Gravity Forms field value (`$lead[$feed->user_role_field_id]`) directly into `WP_User::set_role()` without any allowlist validation, capability comparison, or permission check to constrain which roles can be assigned. This makes it possible for authenticated attackers, with Subscriber-level access and above, to escalate their own WordPress account to Administrator by tampering with the role field value in a form submission. Exploitation requires that an administrator has already configured a Pronamic Pay payment feed in Gravity Forms with the **Update User Role** option enabled and mapped to a form field; once that configuration is in place, no further preconditions exist to prevent an authenticated attacker from exploiting this vulnerability.
📍 영향받는 시스템
Pronamic Pay plugin for WordPress (버전 10.1.0 및 그 이하 모든 버전)
⚔️ 공격 벡터
Gravity Forms의 'Update User Role' 옵션이 활성화된 상태에서, 공격자가 폼 제출 시 역할(role) 필드 값을 조작하여 전송
🛡️ 대응 방법
플러그인을 최신 보안 패치 버전으로 업데이트하거나, Gravity Forms 설정에서 'Update User Role' 옵션을 비활성화하십시오.
🔧 검증 코드
출력된 버전 번호가 10.1.0 이하인지 확인하여 취약 여부를 판단합니다.
wp plugin list --status=active | grep -i 'pronamic-pay' && wp plugin list --format=json | jq '.[] | select(.name=="pronamic-pay") | .version'