SEP sesam Backup Server: unauthentifizierte Remote-Root-Codeausführung über Template-Injektion im executeSql-Endpunkt

Ein unauthentifizierter Angreifer, der Port 11401 erreicht, führt mit einem einzigen HTTP-Request beliebigen Code als root auf dem Backup-Server aus, weil die REST-API im Auslieferungszustand ohne Authentifizierung läuft und einen RYTHM-Template-Ausdruck zu Java-Bytecode kompiliert.

Advisory-ID: TP-2026-073
Produkt: SEP sesam Backup Server (deutsche Enterprise-Backup- und Recovery-Software)
Schwachstellentyp: Server-seitige Template-Injektion zu Remote Code Execution (CWE-1336)
Weitere Schwächen: fehlende Authentifizierung (CWE-306), Ausführung mit unnötigen Rechten (CWE-250)
CVE: pending (MITRE CNA-LR)
CVSS 3.1: 10.0 (Kritisch) · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Betroffene Versionen: 5.2.0-26 (Artemis V6) und früher
Behoben in: vom Hersteller behoben (SEP-Ticket #36822; genaue Version in Bestätigung)
Gemeldet: 03. September 2026

Zusammenfassung

SEP sesam ist eine Enterprise-Backup-Software der SEP AG. Ihre REST-API lauscht auf TCP 11401 und ist auf jeder Standardinstallation ohne Authentifizierung erreichbar, weil der Installer authEnabled=false setzt. Der Endpunkt /sep/api/v2/cli/executeSql nimmt einen vom Aufrufer kontrollierten template-Parameter entgegen; mit format=RYTHM wird dieser an die Rythm-Template-Engine übergeben, die den String zu Java-Bytecode kompiliert und ausführt. Da alle SEP-sesam-Dienste als root laufen, ergibt sich aus einem einzigen unauthentifizierten HTTP-Request eine Remote-Root-Codeausführung. Der Hersteller hat den Fund reproduziert und bestätigt (Ticket #36822) und einen Fix bereitgestellt.

Ursache

Der Installer schreibt authEnabled=false nach sm.ini, und GUIServerParam.authEnabled ist standardmäßig false (sm_db_update.ini:462).
Ist das Flag false, ruft LoginServiceImpl.authenticate() forceCreateAndAuthenticateAdmin() auf und gewährt jedem Request Administrator-Zugriff ohne Anmeldedaten.
CliServiceImpl.executeSql() übergibt den vom Aufrufer kontrollierten template-Parameter mit format=RYTHM an RendererServiceImpl.render() (Zeile 297), das RythmEngine.render() aufruft.
Rythm kompiliert den Template-String zu Java-Bytecode und führt ihn aus, sodass beliebiger Java-Code läuft.
Die Systemd-Unit sepsesam.service lässt User= und Group= auskommentiert, sodass die REST-API als root läuft und die Codeausführung damit Root-Rechte besitzt.

Proof of Concept

Schematisch: ein einzelner HTTP-Request, keine Authentifizierung.

POST /sep/api/v2/cli/executeSql   (TCP 11401)
Content-Type: application/json; base64
{"query":"SELECT 1","format":"RYTHM","template":"<Rythm-Ausdruck>"}

Weil authEnabled im Auslieferungszustand false ist, gewährt die REST-API dem Aufruf Administrator-Rechte. Der RYTHM-Template-Ausdruck wird zu Java-Bytecode kompiliert und ausgeführt; da alle Dienste als root laufen, ist das Ergebnis Root-Codeausführung. Der kopierbare Ausführungs-Payload wird zurückgehalten.

Auswirkung

  • Root-Codeausführung auf dem Backup-Server über einen einzigen unauthentifizierten Request.
  • Zugriff auf alle gesicherten Daten sämtlicher Clients sowie auf gespeicherte Backup-Zugangsdaten (S3-Keys, SSH-Schlüssel, Datenbank-Passwörter).
  • Löschen oder Verschlüsseln aller Backups als Vorbereitung eines Ransomware-Angriffs.
  • Laterale Bewegung über die erbeuteten Zugangsdaten in alle durch SEP sesam geschützten Systeme.

Referenzen

Steckt so etwas in Ihrer Software?

Diese Schwachstelle hat unser Team im Rahmen seiner Arbeit gefunden. Lassen Sie Ihre Anwendungen von denselben Spezialisten prüfen, mit einem Penetrationstest von turingpoint.