CVE-2023-5539: Remote Code Execution in der Moodle-Aktivität Lektion
Abhängigkeiten zwischen Lektionen und Antworten auf Freitextfragen hat die Aktivität Lektion als serialisierte PHP-Werte gespeichert und mit unserialize() ohne Klassenbeschränkung zurückgelesen. Lehrende konnten darüber Code auf dem Server starten.
1Zusammenfassung
- Advisory
- MSA-23-0031
- System
- Moodle
- Komponente
- Lektion (mod_lesson)
- Fehlerklasse
- Remote Code Execution (unsichere Deserialisierung)
- Schwere
- Serious
Eine Lektion kann zurückgehalten werden, bis eine andere abgeschlossen oder eine Mindestnote erreicht ist. Solche Abhängigkeiten legt Moodle serialisiert in der Datenbank ab, ebenso die Antworten auf Freitextfragen.
Beim Zurücklesen durfte der gespeicherte Wert Objekte jeder Klasse aus dem Moodle-Code enthalten. Wer den Wert beeinflusst, bestimmt damit, welche Objekte beim Öffnen der Lektion entstehen, und mit passenden Klassen endet das in eigenem Code auf dem Server.
Gemeldet von Vincent Schneider über den Security-Prozess von Moodle, veröffentlicht als MSA-23-0031.
2Wer ist betroffen
Lehrende mit Bearbeitungsrechten und Manager, die Lektionen anlegen oder ändern.
Gebraucht wird nur das Recht, Lektionen zu bearbeiten, und das haben in der Standardkonfiguration Lehrende und Manager.
3Auswirkung
Eine Lehrkraft, die eigentlich nur ihre Lektion pflegen soll, bekommt Zugriff auf Dateisystem und Datenbank der gesamten Installation. Noten anderer Kurse, Konten und hochgeladene Arbeiten liegen dann offen.
4Behebung
- Betroffene Versionen
- 4.2.0 bis 4.2.2, 4.1.0 bis 4.1.5, 4.0.0 bis 4.0.10, 3.11.0 bis 3.11.16, 3.9.23 und älter
- Behoben in
- 4.2.3, 4.1.6, 4.0.11, 3.11.17, 3.9.24
- Veröffentlicht
- 17.10.2023
- Fix im Quellcode
- ba974a4
Die Werte werden jetzt mit unserialize_object() eingelesen, das ausschließlich einfache Datenobjekte zurückgibt. Eigenschaften, die fehlen können, prüft der Code vor der Verwendung.
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.