
LearnDash의 과제를 통한 민감 정보 노출
LearnDash의 과제를 통한 민감 정보 노출. 인증되지 않은 방문자가 업로드된 과제를 열람하고 다운로드할 수 있습니다.
인증되지 않은 방문자를 포함한 누구나 업로드된 모든 LearnDash 과제를 볼 수 있습니다. 과제가 공개되어 있기 때문에 이 취약점을 아는 사람은 누구든 업로드된 문서를 읽을 수 있습니다 (잠재적인 GDPR 사고 발생). 이 취약점은 웹사이트에 계정이 없어도 악용될 수 있습니다.
LearnDash는 WordPress용 학습 관리 시스템 플러그인입니다.
영향을 받는 LearnDash 버전(<=4.10.1)은 업로드된 과제 파일을 접근 보호 없이 폴더에 저장합니다. 사용자가 과제 파일을 업로드하면 LearnDash는 해당 파일을 /wp-content/uploads/assignments/ 디렉토리에 저장합니다. 파일은 원래 이름을 유지하지만, 업로드된 게시물 ID와 Unix 타임스탬프가 접두사로 추가됩니다.
LearnDash는 세 가지 REST API를 제공합니다: /wp/v2/, /ldlms/v1/, /ldlms/v2/ (현재 베타). 베타 API를 포함한 모든 API는 기본적으로 활성화됩니다. /ldlms/v1/ 및 /ldlms/v2/ API는 learndash_rest_api_enabled 필터를 사용하여 특정 게시물 유형에 대해 비활성화할 수 있습니다 (class-ld-rest-api.php 참조).
인증되지 않은 방문자를 포함한 누구든 파일 이름만 알면 업로드된 모든 과제 파일을 다운로드할 수 있습니다.
LearnDash는 모든 업로드된 파일 이름에 타임스탬프를 추가하여 이름 추측을 어렵게 하지만, 타임스탬프는 무차별 대입이 가능합니다. 불행히도 업로드된 과제를 읽고자 하는 인증되지 않은 방문자는 파일 이름을 무차별 대입할 필요조차 없습니다. 영향을 받는 LearnDash 버전(<=4.10.1)은 REST API를 통해 인증되지 않은 방문자에게 제출된 모든 과제를 공개합니다. 방문자는 /wp/v2/ REST API를 통해 sfwd-assignment 엔드포인트를 호출하기만 하면 됩니다. 응답에는 업로드된 파일의 경로가 포함되며, 방문자는 로그인하지 않고도 다운로드할 수 있습니다.
https://example.com/wp-json/wp/v2/sfwd-assignment
LearnDash 4.10.2는 2024-01-08에 출시되었습니다. 이 버전은 REST API를 통한 과제 파일 경로 유출 문제를 해결했습니다. CVE-2024-1208 및 CVE-2024-1210은 지속되었습니다.
LearnDash 4.10.3은 2024-01-31에 출시되었습니다. 이 버전은 파일 저장 위치를 보호된 폴더로 이동하고 동적 다운로드 링크를 도입하여 무단 접근을 차단했습니다.
LearnDash는 취약점 보고를 잘 처리했으며 90일 책임 공개 기간 내에 취약점을 해결했습니다.