Pfad
Start / Sicherheit / CVE-2023-6663
Fehlerklasse
Remote Code Execution (unsichere Deserialisierung)
Veröffentlicht
21.12.2023
Schwere
Serious

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.