mercure
Rechteausweitung durch fehlende Autorisierung beim Bearbeiten von Benutzern
Die Benutzerverwaltungsseiten von mercure sind admin-only, mit einer Ausnahme: Der Endpunkt, der eine Benutzerbearbeitung speichert, erfordert nur eine angemeldete Sitzung, ohne Admin-Prüfung und ohne Eigentümerprüfung. Jeder authentifizierte Benutzer kann daher ein neues Passwort für ein beliebiges anderes Konto setzen, einschließlich des Administrators, und sich anschließend als dieser anmelden. Eine einzige Anfrage macht aus einem Zugang mit geringen Rechten die volle Admin-Kontrolle.
Beschreibung
mercure ist eine quelloffene DICOM-Orchestrierungsplattform; wir schätzen die schnelle, konstruktive Reaktion der Maintainer auf diesen Bericht. mercure hat eine kleine Menge von Benutzerverwaltungs-Endpunkten, die alle eine Administrator-Sitzung erfordern, mit einer Ausnahme.
Der Endpunkt, der eine Benutzerbearbeitung speichert, ist so dekoriert, dass er nur eine authentifizierte Sitzung erfordert, kein Admin:
app/webinterface/users.py:242-243
@router.post("/edit/{user}")@requires(["authenticated"], redirect="login") # "admin" fehltasync def users_edit_post(request) -> Response:Jeder andere Benutzerverwaltungs-Endpunkt erfordert Admin. Der Speicherpfad ist die Ausnahme:
| Endpunkt | Methode | Erfordert |
|---|---|---|
/users/ (Liste) | GET | authentifiziert, admin |
/users/ (Anlegen) | POST | authentifiziert, admin |
/users/edit/{user} (Formular) | GET | authentifiziert, admin |
/users/edit/{user} (Speichern) | POST | authentifiziert |
/users/delete/{user} | POST | authentifiziert, admin |
Der Zielbenutzer wird aus dem URL-Pfad übernommen, nicht aus der Sitzung, und es gibt weder eine Eigentümerprüfung noch eine Prüfung des aktuellen Passworts. Das Flag is_admin ist separat abgesichert, aber der Angreifer braucht es nicht: Er setzt ein neues Passwort für das Konto admin und meldet sich als Admin an.
app/webinterface/users.py:251, 259-261
edituser = request.path_params["user"] # aus URL-Pfad, nicht aus der Sitzung# ...if form["password"]: to_edit["password"] = hash_password(form["password"]) to_edit["change_password"] = "False"Eine einzige POST-Anfrage an den Edit-Endpunkt des Admin-Benutzers mit einem neuen Passwort genügt; der Angreifer meldet sich dann als Admin an und erreicht jede Admin-Funktion, einschließlich der Codeausführungspfade über Routing-Regeln und Benachrichtigungs-Templates.
Auswirkung
- Jeder authentifizierte Benutzer, auch mit geringen Rechten, kann das Passwort eines beliebigen anderen Benutzers zurücksetzen, ohne das aktuelle zu kennen. Das schließt das Administrator-Konto ein.
- Nach Änderung des Admin-Passworts meldet sich der Angreifer als Admin an und erlangt volle Kontrolle: Routing-Regeln, Verarbeitungsmodule und Systemkonfiguration. Dies ist der Schritt, der die admin-geschützten Codeausführungs-Findings freischaltet.
- Dieselbe Möglichkeit kann alle Benutzer einschließlich Admins aussperren und das Routing-System lahmlegen.
Abhilfe
Aktualisieren Sie auf mercure 0.4.1, wo der POST-Endpunkt zum Bearbeiten von Benutzern eine Administrator-Sitzung erfordert, Nicht-Admins nur ihr eigenes Konto bearbeiten können und eine Passwortänderung das aktuelle Passwort erfordert. Allgemein muss ein schreibender Endpunkt mindestens die Autorisierung seines lesenden Gegenstücks tragen, und Selbstbedienungs-Bearbeitungen müssen das Ziel an die Sitzung binden statt an die URL.
Checkliste für Betreiber
Auf 0.4.1 oder neuer aktualisieren
Das gepatchte Release ausrollen, das für Benutzerbearbeitungen Admin erfordert und das aktuelle Passwort prüft.
Anmeldedaten rotieren
Nach dem Update das Admin-Passwort zurücksetzen und die Benutzerliste auf unerwartete Konten oder Änderungen prüfen.
Standard-Anmeldedaten ändern
Sicherstellen, dass das Standard-Passwort
admin:routergeändert wurde.
Bewertung im Detail
Referenzen
So können wir helfen
Wer wir sind
Die Sicherheitsforscher hinter diesem Sicherheitshinweis.

Dr. rer. nat. Simon Weber
Senior Pentester & MedSec-Forscher
Ich evaluiere Ihr SaMD mit derselben branchenprägenden Sicherheitsexpertise, die ich dem BAK MV für die Überarbeitung des B3S-Standards beigetragen habe.
- Promotion über Krankenhaus-Cybersicherheit
- Kritische Schwachstellen in Krankenhaussystemen gefunden
- Alumni der THB MedSec-Forschungsgruppe
- gematik Security Hero

Dipl.-Inf. Volker Schönefeld
Senior Application Security Expert
Als ehemaliger CTO und Entwickler, der zum Pentester wurde, arbeite ich mit Ihrem Team zusammen, um Schwachstellen aufzudecken und Lösungen zu finden, die zu Ihrer Architektur passen.
- 20+ Jahre als CTO, 50+ Mio. App-Downloads
- Architektur und Absicherung großer IoT-Flotten
- Certified Web Exploitation Specialist
- gematik Security Hero
Penetrationstest gesucht?
Machine Spirits ist spezialisiert auf Sicherheitsbewertungen für Medizinprodukte und Gesundheits-IT. Von MDR-Penetrationstests bis C5-Cloud-Compliance helfen wir MedTech-Unternehmen, regulatorische Anforderungen zu erfüllen.
