Pfad
Start / Sicherheit / CVE-2023-28329
Fehlerklasse
SQL-Injection
Veröffentlicht
20.03.2023
Schwere
Serious

CVE-2023-28329: SQL-Injection über die Profil-Bedingung in Moodle

Die Zugriffsbedingung „Nutzerprofil“ hat den Namen des abgefragten Profilfelds ohne Prüfung in ihre SQL-Abfrage eingesetzt. Wer in einem Kurs Zugriffsbeschränkungen anlegen durfte, konnte damit die Abfrage umbauen.

1Zusammenfassung

Advisory
MSA-23-0004
System
Moodle
Komponente
Zugriffsbedingung Nutzerprofil (availability_profile)
Fehlerklasse
SQL-Injection
Schwere
Serious

Mit einer Zugriffsbeschränkung legt eine Lehrkraft zum Beispiel fest, dass nur Personen aus einer bestimmten Abteilung eine Aktivität sehen. Gespeichert wird dabei, welches Profilfeld verglichen wird und mit welchem Wert.

Den Feldnamen hat Moodle beim Auswerten direkt in die Abfrage auf die Nutzertabelle geschrieben, ohne ihn mit den vorhandenen Profilfeldern abzugleichen. Ein frei gewählter Name veränderte so die SQL-Anweisung selbst.

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

2Wer ist betroffen

Lehrende mit Bearbeitungsrechten und Manager, also alle, die in einem Kurs Zugriffsbeschränkungen setzen dürfen.

Zugriffsbeschränkungen bearbeiten in der Standardkonfiguration nur Lehrende und Manager.

Die Bedingung gehört zum Kern von Moodle und ist in jeder Standardinstallation enthalten; eine Website musste dafür nichts nachinstallieren.

3Auswirkung

Die veränderte Anweisung läuft mit dem Datenbankkonto von Moodle. Lesbar werden darüber auch Tabellen, die die Oberfläche einer Lehrkraft nie zeigt, etwa Profildaten anderer Konten oder Inhalte von Kursen, in denen sie gar nicht eingeschrieben ist.

4Behebung

Betroffene Versionen
4.1.0 bis 4.1.1, 4.0.0 bis 4.0.6, 3.11.0 bis 3.11.12, 3.9.19 und älter
Behoben in
4.1.2, 4.0.7, 3.11.13, 3.9.20
Veröffentlicht
20.03.2023
Fix im Quellcode
81e74af

Seit dem Fix gleicht Moodle den Feldnamen mit get_standard_profile_fields() ab. Steht der Name nicht in dieser Liste, gilt die Bedingung für niemanden als erfüllt, und er gelangt nicht mehr in die Abfrage.

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.