🇰🇷 한글 설명
WordPress용 Tutor LMS 플러그인 3.9.7 이하 버전에서 발생하는 취약점으로, enroll_now() 및 course_enrollment() 함수가 post_status를 검증하지 않아 발생합니다. 이를 통해 인증된 공격자가 비공개 코스에 무단으로 등록할 수 있으며, 대시보드를 통해 코스 제목과 등록 상태가 노출될 수 있습니다.
💡 쉬운 설명
로그인한 일반 사용자가 원래는 볼 수 없는 유료 또는 비공개 강의에 몰래 등록할 수 있는 보안 결함입니다. 강의 내용은 볼 수 없더라도 강의 제목과 같은 정보가 노출될 위험이 있습니다.
🇺🇸 원문 (English)
The Tutor LMS – eLearning and online course solution plugin for WordPress is vulnerable to unauthorized private course enrollment in all versions up to, and including, 3.9.7. This is due to missing post_status validation in the `enroll_now()` and `course_enrollment()` functions. Both enrollment endpoints verify the nonce, user authentication, and whether the course is purchasable, but fail to check if the course has a `private` post_status. This makes it possible for authenticated attackers with Subscriber-level access or above to enroll in private courses by sending a crafted POST request with the target course ID. The enrollment record is created in the database and the private course title and enrollment status are exposed in the subscriber's dashboard, though WordPress core access control prevents the subscriber from viewing the actual course content (returns 404). Enrollment in private courses should be restricted to users with the `read_private_posts` capability.
📍 영향받는 시스템
Tutor LMS plugin for WordPress (version 3.9.7 and below)
⚔️ 공격 벡터
인증된 공격자가 대상 코스 ID를 포함한 조작된 POST 요청을 전송하여 비공개 코스에 등록
🛡️ 대응 방법
Tutor LMS 플러그인을 최신 버전으로 업데이트하거나, 비공개 코스 등록 시 read_private_posts 권한을 확인하도록 수정
🔧 검증 코드
출력된 tutor-lms의 버전이 3.9.7 이하인지 확인하십시오.
wp plugin list --allow-root | grep -E 'tutor-lms'