🇰🇷 한글 설명
WordPress용 Redux Framework 플러그인 4.5.15 이하 버전에서 multi_media 필드 렌더러가 저장된 값을 이스케이프 없이 출력하여 저장형 XSS가 발생합니다. 또한 사용자 권한 검사가 요청 본문의 checkuser_id를 기준으로 이루어져 구독자 권한 사용자가 관리자 전용 필드를 수정할 수 있습니다.
💡 쉬운 설명
회원 가입만 한 일반 사용자가 자신의 프로필에 악성 스크립트를 심을 수 있습니다. 관리자가 해당 프로필을 열어보면 스크립트가 실행되어 관리자 권한이 탈취될 수 있습니다.
🇺🇸 원문 (English)
The Redux Framework plugin for WordPress is vulnerable to Stored Cross-Site Scripting in all versions up to, and including, 4.5.15 via the multi_media field. This is due to the field's renderer printing the stored value into an href attribute, a hidden input value and an HTML element without escaping, while every neighbouring attribute in the same method is wrapped in esc_attr(). It is compounded by Redux_Extension_Users::user_meta_save() evaluating a field's 'permissions' requirement against a user id taken from the request body ('checkuser_id') rather than the current user, so a Subscriber can write a field declared for 'manage_options'. This makes it possible for authenticated attackers with Subscriber-level access and above to inject arbitrary web scripts into their own profile record that execute when an administrator views that user's profile in the dashboard. Requires a theme or plugin that registers a multi_media field through the Redux Users API.
📍 영향받는 시스템
Redux Framework 플러그인 4.5.15 이하 버전 (multi_media 필드를 사용하는 WordPress 테마/플러그인)
⚔️ 공격 벡터
구독자 권한 계정으로 로그인 후 프로필 필드에 악성 스크립트를 주입하고, 관리자가 해당 사용자 프로필을 조회하면 실행됨
🛡️ 대응 방법
Redux Framework를 4.5.16 이상 버전으로 업데이트하고, 보안 패치 적용 여부를 확인하며, 불필요한 사용자 등록을 제한
🔧 검증 코드
출력된 버전이 4.5.15 이하이면 취약하므로 4.5.16 이상으로 업데이트가 필요하며, 명령이 실패하면 플러그인 경로를 직접 확인해야 합니다.
wp plugin get redux-framework --field=version 2>/dev/null || grep -m1 'Version:' wp-content/plugins/redux-framework/redux-framework.php 2>/dev/null