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

CVE-2024-34003: Lokale Dateieinbindung über manipulierte Workshop-Sicherungen in Moodle

Eine Workshop-Sicherung enthält die Namen der Bewertungsstrategie und der Auswertungsmethode. Moodle hat beide beim Wiederherstellen übernommen und darüber Code nachgeladen, ohne die Namen zu prüfen.

1Zusammenfassung

Advisory
MSA-24-0014
System
Moodle
Komponente
Gegenseitige Beurteilung (mod_workshop)
Fehlerklasse
Lokale Dateieinbindung (LFI)
Schwere
Serious

Im Workshop, auf Deutsch „Gegenseitige Beurteilung“, bewerten sich Teilnehmende untereinander. Wie bewertet wird, regelt die Bewertungsstrategie, etwa eine Rubrik. Wie aus den Beurteilungen am Ende eine Note wird, regelt die Auswertungsmethode. Beide sind Subplugins mit eigenem Unterverzeichnis.

Den Code des gewählten Subplugins lädt Moodle über dessen gespeicherten Namen. Nach einer Wiederherstellung stammten strategy und evaluation direkt aus der Sicherungsdatei und gingen so in den Pfad der einzubindenden Datei ein.

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

2Wer ist betroffen

Personen mit dem Recht, Workshops wiederherzustellen, die auf einem falsch eingerichteten Shared Hosting auch außerhalb des Moodle-Verzeichnisses Dateien ablegen können.

Auf einer sauber eingerichteten Installation reicht das Wiederherstellungsrecht allein nicht. Hinzukommen muss ein direkter Zugang zum Dateisystem des Servers außerhalb von Moodle, wie ihn ein schlecht getrenntes Shared Hosting anderen Kunden gewähren kann.

3Auswirkung

Trifft beides zu, führt Moodle fremden PHP-Code aus, sobald der Workshop seine Strategie oder Auswertung lädt. Der Code hat dieselben Rechte wie Moodle und erreicht damit Datenbank und Dateiablage der Instanz.

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
e870bc0

clean_param() beschränkt beide Werte jetzt auf gültige Plugin-Namen: beim Wiederherstellen, beim Laden der Aktivität und beim Setzen der Auswertungsmethode. Ist die Strategie leer, endet der Aufruf mit einem Fehler, bevor Moodle nach einer Datei sucht.

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.