🇰🇷 한글 설명
WordPress의 Academy LMS 플러그인 4.0.3 이하 버전에서 권한 상승 취약점이 발견되었습니다. 공격자가 이메일 파라미터를 조작하여 `add_child()` 함수를 호출하면, 관계 검증 이전에 특정 계정에 'academy_student' 역할을 부여할 수 있습니다. 이를 통해 공격자는 게시물 편집 및 파일 업로드 권한을 획득하여 권한을 상승시킬 수 있습니다.
💡 쉬운 설명
학습 관리 플러그인의 오류를 이용해 일반 사용자가 관리자급 권한을 몰래 얻을 수 있는 문제입니다. 공격자가 자신의 이메일을 입력하면 시스템이 오류를 일으키는 과정에서 오히려 권한이 더 높은 사용자로 변하게 됩니다.
🇺🇸 원문 (English)
The Academy LMS – AI Course Builder, Quizzes, Certificates & eLearning plugin for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 4.0.3. This is due to the `add_child()` function calling `add_role('academy_student')` on any existing account resolved from the attacker-supplied `email` parameter before `Store::link()` validates the guardian-ward relationship, and failing to roll back that role write when `Store::link()` returns a `WP_Error`. This makes it possible for authenticated attackers with the `academy_guardian` role or higher to elevate any existing WordPress account — including their own — to the `academy_student` role, gaining `edit_posts` (Contributor-equivalent) capabilities and, when the student file-upload setting is enabled, `upload_files` (Author-equivalent) capabilities not granted to the guardian role. When a guardian supplies their own email address, `email_exists()` resolves to their own user ID, causing `Store::link()` to reject the self-link, but because the `add_role()` call has already executed and is never reversed, the academy_student role grant on their own account persists permanently.
📍 영향받는 시스템
Academy LMS WordPress plugin (versions up to and including 4.0.3)
⚔️ 공격 벡터
인증된 'academy_guardian' 이상의 권한을 가진 공격자가 `add_child()` 함수의 `email` 파라미터를 조작하여 공격 수행
🛡️ 대응 방법
Academy LMS 플러그인을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
명령어 결과에 해당 플러그인이 나타나면 4.0.3 이하의 취약한 버전이 설치된 상태입니다.
wp plugin list --name academy-lms --format=json | grep -E '"version":"[0-4]\.[0-3]\.'