CVE-2023-5540: Remote Code Execution in der Moodle-Aktivität IMS-Content-Paket
Das Inhaltsverzeichnis eines IMS-Content-Pakets speichert Moodle nach dem Hochladen als serialisierten Wert. Beim erneuten Einlesen fehlte jede Typprüfung, was Lehrenden die Ausführung von eigenem Code auf dem Server erlaubte.
1Zusammenfassung
- Advisory
- MSA-23-0032
- System
- Moodle
- Komponente
- IMS-Content-Paket (mod_imscp)
- Fehlerklasse
- Remote Code Execution (unsichere Deserialisierung)
- Schwere
- Serious
Ein IMS-Content-Paket ist ein Archiv mit Lernmaterial und einem Inhaltsverzeichnis. Moodle liest diese Struktur beim Hochladen aus, speichert sie und verwendet sie für Anzeige und Export wieder.
Erwartet wird dort eine einfache verschachtelte Liste. unserialize() hat aber jeden Wert akzeptiert, auch Objekte beliebiger Klassen, und damit eine PHP Object Injection möglich gemacht.
Gemeldet von Vincent Schneider über den Security-Prozess von Moodle, veröffentlicht als MSA-23-0032.
2Wer ist betroffen
Lehrende mit Bearbeitungsrechten und Manager, wenn sie IMS-Content-Pakete anlegen oder bearbeiten.
In der Standardkonfiguration trifft das Lehrende und Manager, weil sie diesen Aktivitätstyp in ihren Kursen anlegen dürfen.
3Auswirkung
Wer ein Paket hochladen durfte, konnte auf diesem Weg Befehle mit den Rechten des Webservers ausführen. Ab da spielt die Kurszugehörigkeit keine Rolle mehr, weil Konfiguration, Datenbank und Dateiablage der Website direkt erreichbar sind.
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
- 3400ae6
Zum Einlesen nutzt Moodle jetzt unserialize_array(). Die Funktion liefert nur Arrays mit einfachen Werten und lehnt Objekte ab.
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.