
PoC и документация для CVE-2026-7275: Moodle Google Drive Repository (repository_googledocs) — Path Traversal / Arbitrary File Write, которые могут привести к RCE на незапатченных версиях Moodle.
PoC и документация для CVE-2026-7275: Google Drive Repository в Moodle (repository_googledocs) — Path Traversal / Arbitrary File Write, который может привести к RCE на незапатченных версиях Moodle.
Дисклеймер: Только для авторизованных исследований безопасности, аудита и защитного обучения. Не используйте на системах без письменного разрешения.
| Поле | Значение |
|---|---|
| CVE | CVE-2026-7275 |
| Advisory | MSA-26-0006 |
| Tracker | MDL-88423 |
| Компонент | repository_googledocs |
| CWE | CWE-22 (Path Traversal) |
| Severity | Critical (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 |
Плагин Google Drive в Moodle загружает файлы из Google API, используя метаданные имени файла ($originalfile->name). До патча это имя передавалось в prepare_file() без санитизации, поэтому payload вида ../../../../public/shell.php мог записать файл за пределами временной директории → потенциальный RCE, если webroot выполняет PHP.
Не нужно знать абсолютный путь — достаточно относительного обхода (../ повторяется) из случайной временной папки.
├── README.md ← резюме (этот файл)
├── CONTRIBUTORS.md ← 0xNuts + Cursor
├── EXPLOIT.md ← цепочка атаки, payload, предварительные условия
├── PATCH.md ← анализ патча и меры смягчения
└── poc/
└── demo_path_traversal.py ← локальная демонстрация до патча и после патча
python poc/demo_path_traversal.py
Вывод показывает путь ESCAPE (до патча) против contained (после патча).
| Условие | Детали |
|---|---|
| Аккаунт Moodle | Аутентифицированный пользователь |
| Capability | repository/googledocs:view |
| OAuth | Google Drive привязан к пользователю Moodle |
| Плагин | repository_googledocs активен |
| Версия | Не пропатчено (< 5.1.4 / < 5.0.7 / < 4.5.11) |
// 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
*/