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.