Alle Sicherheitshinweise

MEx Backend

Fehlende Zugriffskontrolle auf DELETE-Endpunkt

Der Endpunkt DELETE /v0/merged-item/{identifier} ist mit Read-only-Credentials erreichbar, da am Router keine Autorisierung erzwungen wird. Ein einzelner DELETE-Request löst eine kaskadierende Löschung aus, die das Merged Item, alle verknüpften Extracted Items, alle Rule-Sets und alle verschachtelten Objekte unwiderruflich löscht.

SchweregradHochCVSS 8.1CVSS-3.1-VektorAV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:HCWECWE-862 (Missing Authorization)ProduktMEx BackendBetroffene Versionen1.2.0 bis 1.7.2Behoben in1.8.0

Beschreibung

Der merged_router wird bei main.py:80 mit einem Read-Access-Guard registriert, enthält aber einen DELETE-Endpunkt, der eine destruktive Schreiboperation durchführt. Es gibt keine endpunktspezifische Autorisierung, die den Zugriff auf schreibberechtigte Benutzer einschränkt.

mex/backend/main.py:80

router.include_router(merged_router, dependencies=[Depends(has_read_access)])

View source →

Der DELETE-Endpunkt bei merged/main.py:64 erbt den Read-Access-Guard ohne Überschreibung:

mex/backend/merged/main.py:64-67

@router.delete(
"/merged-item/{identifier}", status_code=status.HTTP_204_NO_CONTENT, tags=["editor"]
)
def delete_merged_item(
identifier: Annotated[Identifier, Path()],
include_rule_set: Annotated[bool, Query(...)] = False,
) -> None:

View source →

Die Funktion has_read_access prüft lediglich, ob Credentials in der Read- oder Write-Datenbank vorhanden sind. Sie prüft nicht auf Schreibberechtigung und unterscheidet nicht nach HTTP-Methode:

mex/backend/security.py:105

if api_key:
api_key_database = settings.backend_api_key_database
can_read = APIKey(api_key) in api_key_database.read

View source →

Die Löschung kaskadiert: Ein einzelner DELETE-Request löscht das Merged Item, alle verknüpften Extracted Items (aus mehreren ETL-Pipelines), alle Rule-Sets und alle verschachtelten Objekte (Text, Link). Es gibt keinen Soft-Delete- oder Undo-Mechanismus. Die Wiederherstellung erfordert eine erneute Einspeisung aus allen Quell-ETL-Pipelines.

Im Gegensatz dazu verwendet der ingest_router bei main.py:77 korrekt Depends(has_write_access) und gibt für Read-only-Schlüssel den Statuscode 403 zurück.

Dieselbe Schwachstelle existiert in der Testanwendung bei testing/main.py:48.

Der DELETE-Endpunkt wurde in v1.2.0 (23.10.2025) eingeführt. Der merged_router wurde seit seiner Erstellung mit has_read_access registriert.

Der MEx-Editor verwendet derzeit einen gemeinsamen API Key mit Schreibberechtigung für alle Backend-Anfragen, unabhängig von der Benutzerrolle, und maskiert diese Schwachstelle in der Praxis. Allerdings enthält der Editor-Code ein TODO (MX-1616) für den Umstieg auf benutzerspezifische Backend-Credentials. Sobald diese Migration umgesetzt wird, wird die fehlende Autorisierung des Backends auf DELETE direkt über den Editor für jeden authentifizierten Benutzer ausnutzbar.

Auswirkung

  • Jeder Benutzer mit Read-only-Credentials kann über den Endpunkt DELETE /v0/merged-item/{identifier} beliebige Metadaten-Einträge löschen.
  • Im MEx-Kontext kann eine Person mit Lesezugriff alle Einträge im Metadatenkatalog löschen. Die Wiederherstellung erfordert eine erneute Einspeisung aus allen Quell-ETL-Pipelines.

Abhilfe

Aktualisieren Sie auf MEx Backend 1.8.0 oder höher. Für ältere Versionen fügen Sie dependencies=[Depends(has_write_access)] zum @router.delete-Dekorator bei merged/main.py:64 hinzu, oder teilen Sie den merged_router, sodass GET-Endpunkte has_read_access behalten und der DELETE-Endpunkt has_write_access erhält. Wenden Sie dieselbe Korrektur bei testing/main.py:48 an.

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.