
Uncanny Groups for LearnDash를 악용한 인증된 사용자의 관리자 권한 상승
Uncanny Groups for LearnDash (uncanny-learndash-group)는 LearnDash LMS (sfwd-lms)용 타사 플러그인입니다. 이 플러그인은 그룹 리더(사용자 정의 LearnDash 역할)가 프론트엔드에서 자신의 LearnDash 그룹 사용자를 관리할 수 있게 해줍니다.
그룹 리더는 기존 사용자를 자신의 그룹에 추가할 수 있습니다. 기존 사용자는 자동으로 추가됩니다(초대를 수락할 필요가 없습니다).
사이트 관리자가 '그룹 리더가 사용자를 편집하도록 허용'이라는 플러그인 기능을 활성화한 경우, 그룹 리더는 그룹 구성원(사용자)의 이름과 이메일 주소를 변경할 수도 있습니다. 이 기능은 기본적으로 비활성화되어 있습니다.
그룹 리더는 '그룹 리더가 사용자를 편집하도록 허용' 설정이 활성화된 경우 관리자의 이메일 주소를 변경하여 관리자 액세스 권한을 얻을 수 있습니다. CVE-2024-8350과 함께 악용되면 '그룹 리더가 사용자를 편집하도록 허용' 설정의 상태에 관계없이 모든 그룹 리더가 관리자가 될 수 있습니다.
플러그인은 기존 그룹 구성원(사용자)이 새 그룹에 추가될 때 해당 역할을 확인하지 않습니다. '그룹 리더가 사용자를 편집하도록 허용'이 활성화된 경우, 그룹 리더는 기존 관리자를 자신의 그룹에 추가하여 사이트에서 관리자 권한을 얻을 수 있습니다. 기존 관리자를 그룹에 추가한 후 그룹 리더는 관리자의 이메일 주소를 변경하고 비밀번호를 재설정하기만 하면 됩니다.
Uncanny Owl은 2024-08-26에 불충분한 패치(6.1.0.1)를 게시했습니다. 이 취약점은 더 이상 관리자가 되는 데 악용될 수 없었지만(CVE-2024-8350과 함께 사용되는 경우 제외), 여전히 모든 그룹 리더가 편집자(또는 그 이하)가 되는 데 사용될 수 있었습니다. '그룹 리더가 사용자를 편집하도록 허용'이 활성화되어 있어야 했습니다.
Uncanny Owl은 2024-09-11에 전체 패치(6.1.1)를 게시했습니다.
그룹 리더는 REST API에서 권한 확인이 누락되어 사용자의 연락처 세부 정보를 변경할 수 있습니다. CVE-2024-8349와 함께 악용되면 모든 그룹 리더가 자신에게 관리자 권한을 부여할 수 있습니다.
플러그인에는 '그룹 리더가 사용자를 편집하도록 허용'이라는 사이트 전체 권한 설정이 있습니다. 활성화되면 그룹 리더는 그룹 구성원(사용자)의 이름과 이메일 주소를 변경할 수 있습니다. 이 기능은 기본적으로 비활성화되어 있습니다.
그러나 기능을 비활성화해도 프론트엔드에 설정이 표시되지 않을 뿐입니다. 그룹 리더는 동일한 작업으로 POST 요청을 계속 보낼 수 있습니다. 그룹 리더는 모든 사용자를 자신의 그룹에 추가할 수 있으므로 모든 사용자의 이름과 이메일 주소를 변경할 수도 있습니다.
https://example.com/wp-json/ulgm_management/v1/edit_user/?
action=edit-user&group-id={Group ID}&edit-user-id={user ID}&first_name=Lorem&last_name=Ipsum&email={attacker’s email address}
(그룹 ID와 사용자 ID는 페이지 콘텐츠의 일부로 찾을 수 있습니다.)
CVE-2024-8349와 함께 악용되면 모든 그룹 리더가 자신에게 관리자 권한을 부여할 수 있습니다.
Uncanny Owl은 2024-08-26에 불충분한 패치(6.1.0.1)를 게시했습니다. 취약점이 부분적으로 패치되었지만, 역시나 프론트엔드에서만 패치되었습니다. '그룹 리더가 사용자를 편집하도록 허용' 설정이 활성화되어 있어야 했습니다.
그룹 리더가 그룹의 일부로 관리자를 보유한 경우, 그룹 리더는 더 이상 관리자의 이메일 주소를 변경하기 위한 모달을 표시할 수 없었습니다. 그러나 REST API는 여전히 그룹 리더가 이를 수행하도록 허용했습니다.
그룹 리더는 CVE-2024-8350을 CVE-2024-8349와 함께 악용하여 여전히 관리자가 될 수 있었습니다. 그룹 리더는 먼저 편집자를 자신의 그룹에 추가하고 편집자의 계정을 인수해야 했습니다. 그런 다음 그룹 리더(현재 편집자)는 LearnDash의 백엔드에서 관리자를 추가하고 Uncanny Groups의 REST API를 통해 관리자의 이메일 주소를 변경할 수 있었습니다.
Uncanny Owl은 2024-09-11에 전체 패치(6.1.1)를 게시했습니다.
Uncanny Owl은 취약점 보고를 잘 처리했으며 90일 이내의 책임 있는 공개 기간 내에 취약점을 해결했습니다.
사이트 관리자는 그룹 A의 그룹 리더가 사용자의 동의 없이 그룹 B에 속한 사용자를 추가할 수 있다는 점을 인지해야 합니다. 예를 들어 그룹 A와 그룹 B가 서로 다른 회사인 경우 기밀성 및 GDPR 준수 문제가 될 수 있습니다. 그러나 이것은 플러그인이 의도된 방식으로 작동하는 것이므로 취약점이 아닙니다.
저는 2021년에 이 기밀성 문제를 해결하는 것에 대한 기능 요청을 제출했습니다. Uncanny Owl은 이제 제 기능 요청을 재고할 것입니다. 영향을 받는 사이트는 그동안 ulgm_gdpr_is_group_leader_allowed 필터와 사용자 정의 프론트엔드 템플릿 재정의를 사용하여 자체 해결 방법을 구현할 수 있습니다.