
PoC & dokumentasi untuk CVE-2026-7275: Moodle Google Drive Repository (repository_googledocs) — Path Traversal / Arbitrary File Write yang dapat mengarah ke RCE pada versi Moodle yang belum dipatch.
CVE-2026-7275에 대한 PoC 및 문서: Moodle Google Drive Repository (repository_googledocs) — 패치되지 않은 Moodle 버전에서 RCE로 이어질 수 있는 Path Traversal / Arbitrary File Write
면책 조항: 승인된 보안 연구, 감사 및 방어 교육용으로만 사용하십시오. 서면 허가 없이 시스템에 사용하지 마십시오.
| 필드 | 값 |
|---|---|
| CVE | CVE-2026-7275 |
| 권고 | MSA-26-0006 |
| 추적자 | MDL-88423 |
| 구성 요소 | repository_googledocs |
| CWE | CWE-22 (경로 탐색) |
| 심각도 | 심각 (CVSS ~9.1) |
| 영향받는 버전 | Moodle 5.1.0–5.1.3, 5.0.0–5.0.6, 4.5.0–4.5.10 |
| 수정된 버전 | 5.1.4, 5.0.7, 4.5.11 |
Moodle의 Google Drive 플러그인은 파일 이름 메타데이터($originalfile->name)를 사용하여 Google API에서 파일을 다운로드합니다. 패치 이전에는 이 이름이 새니타이즈 없이 prepare_file()에 전달되어 ../../../../public/shell.php와 같은 페이로드가 임시 디렉토리 밖에 파일을 쓸 수 있었고, 이는 웹루트가 PHP를 실행할 경우 RCE로 이어질 수 있었습니다.
절대 경로를 알 필요 없음 — 임시 폴더에서 반복적인 상대 경로 이동(../)만으로 충분합니다.
├── README.md ← 개요 (이 파일)
├── CONTRIBUTORS.md ← 0xNuts + Cursor
├── EXPLOIT.md ← 공격 체인, 페이로드, 전제 조건
├── PATCH.md ← 패치 분석 및 완화
└── poc/
└── demo_path_traversal.py ← 로컬 데모 (패치 전 vs 패치 후)
python poc/demo_path_traversal.py
출력은 패치 전 ESCAPE 경로와 패치 후 contained 경로를 보여줍니다.
// public/repository/lib.php — prepare_file()
return sprintf('%s/%s', make_request_directory(), clean_param($filename, PARAM_FILE));
자세한 내용: PATCH.md
| 0xNuts | @ExDev994 — 수석 연구원, PoC, 문서 |
| Cursor | cursor.com — 공동 연구원, 정적 분석, 익스플로잇 및 패치 작성 |
자세한 내용: CONTRIBUTORS.md
/*
* CVE-2026-7275 — break to understand, patch to defend.
* Contributors: 0xNuts (@ExDev994) + Cursor
*/
| 조건 | 세부사항 |
|---|
| Moodle 계정 | 인증된 사용자 |
| 권한 | repository/googledocs:view |
| OAuth | Moodle 사용자에게 연결된 Google Drive |
| 플러그인 | repository_googledocs 활성화 |
| 버전 | 패치되지 않음 (< 5.1.4 / < 5.0.7 / < 4.5.11) |