CVE-2023-6663: Remote Code Execution über Kursblöcke in Moodle
Blockeinstellungen liegen in Moodle als serialisierter PHP-Wert vor. Beim Sichern eines Kurses wurden sie mit unserialize() gelesen, ohne Klassen zu beschränken, und Lehrende konnten so Code auf dem Server ausführen.
1Zusammenfassung
- Advisory
- MSA-23-0046
- System
- Moodle
- Komponente
- Kursblöcke, Sicherung und Wiederherstellung (core_backup)
- Fehlerklasse
- Remote Code Execution (unsichere Deserialisierung)
- Schwere
- Serious
Blöcke wie der Kalender oder ein Textblock am Rand der Kursseite speichern ihre Konfiguration gesammelt in einem Feld. Beim Sichern und Wiederherstellen liest Moodle dieses Feld aus, um enthaltene Links und Dateiverweise an die neue Umgebung anzupassen.
Auf der Sicherungsseite fehlte dabei die Beschränkung auf erlaubte Klassen. Die Wiederherstellung nutzte bereits unserialize_object(), ließ aber Objekte unbekannter Klassen in der Konfiguration stehen.
Gemeldet von Vincent Schneider über den Security-Prozess von Moodle, veröffentlicht als MSA-23-0046.
2Wer ist betroffen
Lehrende mit Bearbeitungsrechten und Manager, die in ihrem Kurs Blöcke verwalten.
Nach dem Advisory konnten Lehrende und Manager die Lücke in der Standardkonfiguration ausnutzen.
Blöcke und Kurssicherung gehören zum Kern von Moodle, betroffen war also jede Installation mit einer der genannten Versionen.
3Auswirkung
Der Einstieg ist ein gewöhnliches Lehrkonto in einem einzigen Kurs. Am Ende steht Code auf dem Server, der die Konfiguration samt Datenbankpasswort liest und damit an die Daten sämtlicher Kurse kommt.
4Behebung
- Betroffene Versionen
- 4.3.0, 4.2.0 bis 4.2.3, 4.1.0 bis 4.1.6, 4.0.0 bis 4.0.11, 3.11.0 bis 3.11.17, 3.9.24 und älter
- Behoben in
- 4.3.1, 4.2.4, 4.1.7, 4.0.12, 3.11.18, 3.9.25
- Veröffentlicht
- 21.12.2023
- Fix im Quellcode
- 0f3e5df
Beim Sichern liest Moodle die Blockkonfiguration jetzt mit unserialize_object() ein. Sicherung und Wiederherstellung filtern außerdem Werte heraus, deren Klasse PHP nicht kennt.
Diese Fehlerklasse prüfen wir in jedem Projekt, das wir bauen oder auditieren. Für fremden Code als Sicherheitsaudit.
5 / Kontakt
Sollen wir Ihre Moodle-Plugins prüfen?
Beschreiben Sie Ihr Vorhaben in drei kurzen Schritten. Wir melden uns in der Regel innerhalb eines Werktags.