
PoC & Dokumentation für CVE-2026-7275: Moodle Google Drive Repository (repository_googledocs) — Path Traversal / Arbitrary File Write, das auf nicht gepatchten Moodle-Versionen zu RCE führen kann.
PoC & Dokumentation für CVE-2026-7275: Moodle Google Drive Repository (repository_googledocs) — Path Traversal / beliebiges Datei-Schreiben (Arbitrary File Write), das zu RCE auf nicht gepatchten Moodle-Versionen führen kann.
Haftungsausschluss: Nur für autorisierte Sicherheitsforschung, Audits und defensive Schulung. Nicht auf Systemen ohne schriftliche Genehmigung verwenden.
| Feld | Wert |
|---|
| CVE | CVE-2026-7275 |
| Advisory | MSA-26-0006 |
| Tracker | MDL-88423 |
| Komponente | repository_googledocs |
| CWE | CWE-22 (Path Traversal) |
| Schweregrad | Kritisch (CVSS ~9.1) |
| Betroffen | Moodle 5.1.0–5.1.3, 5.0.0–5.0.6, 4.5.0–4.5.10 |
| Behoben in | 5.1.4, 5.0.7, 4.5.11 |
Das Google-Drive-Plugin in Moodle lädt Dateien von der Google API herunter und verwendet dabei den Metadaten-Dateinamen ($originalfile->name). Vor dem Patch wurde dieser Name ohne Bereinigung (Sanitization) an prepare_file() übergeben, sodass Payloads wie ../../../../public/shell.php Dateien außerhalb des temporären Verzeichnisses schreiben konnten → potenzielle RCE, wenn das Webroot PHP ausführt.
Kein absoluter Pfad erforderlich — ein relativer Traversal (../ wiederholt) aus dem zufälligen Temp-Ordner reicht aus.
├── README.md ← Zusammenfassung (diese Datei)
├── CONTRIBUTORS.md ← 0xNuts + Cursor
├── EXPLOIT.md ← Angriffskette, Payload, Voraussetzungen
├── PATCH.md ← Patch-Analyse & Mitigationen
└── poc/
└── demo_path_traversal.py ← lokale Demo pre-patch vs. post-patch
python poc/demo_path_traversal.py
Die Ausgabe zeigt den ESCAPE-Pfad (pre-patch) im Vergleich zu contained (post-patch).
| Bedingung | Detail |
|---|---|
| Moodle-Konto | Authentifizierter Benutzer |
| Capability | repository/googledocs:view |
| OAuth | Google Drive mit dem Moodle-Benutzer verknüpft |
| Plugin | repository_googledocs aktiv |
| Version | Nicht gepatcht (< 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));
Vollständige Details: PATCH.md
| 0xNuts | @ExDev994 — leitender Forscher, PoC, Dokumentation |
| Cursor | cursor.com — Co-Forscher, statische Analyse, Exploit- & Patch-Beschreibung |
Details: CONTRIBUTORS.md
/*
* CVE-2026-7275 — break to understand, patch to defend.
* Contributors: 0xNuts (@ExDev994) + Cursor
*/