Pfad
Start / Sicherheit / CVE-2024-34002
Fehlerklasse
Lokale Dateieinbindung (LFI)
Veröffentlicht
13.05.2024
Schwere
Serious

CVE-2024-34002: Lokale Dateieinbindung über manipulierte Feedback-Sicherungen in Moodle

Beim Wiederherstellen einer Feedback-Aktivität übernahm Moodle den Typ jedes Elements aus der Sicherungsdatei und baute daraus den Pfad einer PHP-Datei, die anschließend eingebunden wurde.

1Zusammenfassung

Advisory
MSA-24-0013
System
Moodle
Komponente
Feedback-Aktivität (mod_feedback)
Fehlerklasse
Lokale Dateieinbindung (LFI)
Schwere
Serious

Ein Feedback besteht aus Elementen wie Multiple-Choice-Fragen, Textfeldern oder Infotexten. Welcher Code ein Element darstellt und auswertet, entscheidet sein Typ: Moodle sucht unter diesem Namen ein Verzeichnis im Feedback-Modul und lädt die PHP-Datei darin.

In einer Sicherung steht der Typ als einfacher Text. Moodle hat ihn beim Wiederherstellen ohne Bereinigung übernommen und später, beim Laden der Elemente, in den Dateipfad eingesetzt. Ein veränderter Typ konnte so auf eine Datei an anderer Stelle des Servers zeigen.

Gemeldet von Vincent Schneider über den Security-Prozess von Moodle, veröffentlicht als MSA-24-0013.

2Wer ist betroffen

Wer Feedback-Aktivitäten wiederherstellen darf und auf einem falsch konfigurierten Shared Hosting zusätzlich eigene Dateien außerhalb des Moodle-Verzeichnisses ablegen kann.

Laut Advisory müssen zwei Dinge zusammenkommen. Die Person braucht das Recht, Feedback-Aktivitäten wiederherzustellen, und sie muss auf demselben Server außerhalb des Moodle-Verzeichnisses Dateien ablegen können.

Die zweite Bedingung erfüllt nur ein Shared Hosting, bei dem ein Kundenkonto auf die Inhalte anderer Konten zugreifen kann. Auf einem eigenen Server fehlt sie.

3Auswirkung

Eine eingebundene PHP-Datei wird ausgeführt, und zwar im Prozess des Webservers mit allem, was Moodle selbst lesen darf. Dazu gehören die Datenbank-Zugangsdaten in config.php.

4Behebung

Betroffene Versionen
4.3.0 bis 4.3.3, 4.2.0 bis 4.2.6, 4.1.9 und älter
Behoben in
4.3.4, 4.2.7, 4.1.10
Veröffentlicht
13.05.2024
Fix im Quellcode
5a18d94

Der Fix setzt an zwei Stellen an. Beim Wiederherstellen und beim Laden reduziert clean_param() den Typ auf Buchstaben, und feedback_get_item_class() bindet nur noch Typen ein, die im Modul tatsächlich vorhanden sind. Bei allen anderen bricht Moodle mit einem Fehler ab.

Wer Moodle bei einem Shared-Hosting-Anbieter betreibt, sollte unabhängig vom Update prüfen lassen, ob die Kundenkonten dort sauber voneinander getrennt sind.

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.