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.
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)])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: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.readDie 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. 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.
