Alle Sicherheitshinweise

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.

Verfasst vonVolker Schönefeld, Simon Weber2026-05-30
SchweregradHochCVSS 8.8CVSS-3.1-VektorAV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HCWECWE-862 (Missing Authorization)ProduktmercureBetroffene VersionenAlle Releases von 0.2.0-beta.1 bis 0.4.0-beta.9.Behoben in0.4.1. Der POST-Endpunkt zum Bearbeiten von Benutzern erfordert nun eine Administrator-Sitzung, Nicht-Admins können nur ihr eigenes Konto bearbeiten, und eine Passwortänderung erfordert das aktuelle Passwort.CVEAusstehendGHSAAusstehend

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" fehlt
async def users_edit_post(request) -> Response:

View source →

Jeder andere Benutzerverwaltungs-Endpunkt erfordert Admin. Der Speicherpfad ist die Ausnahme:

EndpunktMethodeErfordert
/users/ (Liste)GETauthentifiziert, admin
/users/ (Anlegen)POSTauthentifiziert, admin
/users/edit/{user} (Formular)GETauthentifiziert, admin
/users/edit/{user} (Speichern)POSTauthentifiziert
/users/delete/{user}POSTauthentifiziert, 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"

View source →

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:router geändert wurde.

Bewertung im Detail

AV:NDer Endpunkt wird über das Netzwerk über die Weboberfläche erreicht.AC:LEine einzige POST-Anfrage führt die Übernahme durch.PR:LEin beliebiges authentifiziertes Konto genügt; Admin ist nicht erforderlich.UI:NKeine Benutzerinteraktion.S:UDie Auswirkung bleibt im Authentifizierungs-Scope der Anwendung selbst.C/I/A:HDie Admin-Übernahme legt die gesamte von der Anwendung verwaltete Konfiguration und Daten offen, erlaubt deren Änderung und kann allen Benutzern den Dienst verweigern.

Referenzen

So können wir helfen

Wer wir sind

Die Sicherheitsforscher hinter diesem Sicherheitshinweis.

Dr. Simon Weber Profile

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
Volker Schönefeld Profile

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.