Forschungsergebnis: Identifizierung von CVE-2025-42937 (SAPSprint RCE)

Onapsis Research Labs hat eine aus der Ferne ausnutzbare Path-Traversal-Sicherheitslücke im SAP-Druckprotokoll identifiziert. Dieses Protokoll, das zum Senden von Druckaufträgen an den SAPSprint-Dienst verwendet wird, versäumt es, einen Pfad ordnungsgemäß zu bereinigen. Der Exploit, der keine Authentifizierung erfordert und standardmäßig auf dem Zielport 515 läuft, ermöglicht es einem Angreifer, beliebige Dateien auf den Server hochzuladen.
Obwohl der Dateipfad auf 40 Zeichen begrenzt ist, lässt sich diese Einschränkung umgehen, um wichtige dynamische Link-Bibliotheken (DLLs) zu überschreiben, die vom Dienst „sapsprint.exe“ verwendet werden. Ein Angreifer könnte beispielsweise die Datei „C:\Windows\OCR.dll“ ersetzen. Dieser Austausch ermöglicht die Ausführung beliebiger Betriebssystembefehle mit den erweiterten Berechtigungen des Kontos „NT AUTHORITY\SYSTEM“, sofern der Dienst nicht ordnungsgemäß isoliert ist.
- CVSS-Bewertung: 9,8 (kritisch)
- Betroffene Komponente: SAPSprint Server (SAP-Druckdienst)
- Risikostufe: Kritisch – Sofortiges Handeln erforderlich
Was ist SAPSprint?
SAPSprint ist ein Windows-Dienst, der für das Drucken aus der Ferne in einer SAP-Umgebung verwendet wird. Er fungiert als Brücke zwischen dem SAP-Spool-Server und dem Windows-Spooler.
Es ist der moderne, leistungsfähigere Nachfolger des alten SAPlpd-Programms. Seine Hauptaufgabe besteht darin, Druckdaten von einem SAP-System über ein Netzwerk zu empfangen und an einen bestimmten Druckertreiber auf einem Windows-Druckserver weiterzuleiten.
Es wird weltweit von Tausenden von SAP-Kunden genutzt, insbesondere von solchen, die SAP ECC oder S/4HANA (Private Edition) vor Ort betreiben. Während SAP bei seinen Cloud aufCloud “-Dienste setzt, bleibt SAPSprint das Standardwerkzeug für alle Unternehmen, die einen zentralen Windows-Druckserver zur Verwaltung ihres physischen Druckerparks nutzen. Es ist in den Bereichen Lagerhaltung, Logistik und Fertigung weit verbreitet, wo große Mengen an Etiketten, Rechnungen und Kommissionierlisten zuverlässig und ohne manuellen Eingriff gedruckt werden müssen.
Das SAP-Druckprotokoll
Das SAP-Druckprotokoll ist ein Kommunikationsverfahren im Klartext, das zur Übertragung von Druckdaten verwendet wird und daher von Natur aus anfällig für Abhör- und Replay-Angriffe ist.
Nachdem wir in unserem Labor einen SAPSprint-Dienst installiert hatten – wobei wir die Standardkonfiguration beibehalten hatten – und eines unserer SAP NetWeaver ABAP-Systeme konfiguriert hatten, begannen wir, wie normale Benutzer Dokumente auszudrucken. Mit der Transaktion SPAD legten wir ein Ausgabegerät mit dem Gerätetyp „PDF1“ an; als Zugriffsmethode wählten wir „S: Drucken über SAP-Protokoll“, das auf unseren SAPSprint-Server-Host und Port 515 konfiguriert war.
Als Erstes haben wir uns die Netzwerkkommunikation zwischen dem SAP-System und dem Windows-Server auf Port 515 (dem Standardport für SAPSprint) angesehen.

Wie Sie sehen können, ist alles im Klartext dargestellt, und das Protokoll „SAPLPD“ sieht sehr einfach aus. Wir können bereits einige Informationen erahnen, wie zum Beispiel: den Benutzer (DO), den SAP-Mandanten (DM), den Gerätetyp (PT), den gedruckten Inhalt (DB) und die Überprüfung des Konfigurationsflags (OM).
Ohne Einschränkungen beim Zugriff auf Port 515 lässt sich das Paket ganz einfach mit netcat von einem Rechner außerhalb des SAP-Systems wiedergeben:

Auf der Windows-Serverseite haben wir festgestellt, dass während des Druckvorgangs mehrere Protokolldateien erstellt wurden. Durch eine Änderung der SAPSprint-Konfiguration war es zudem möglich, eine Kopie des gedruckten Inhalts zu erhalten (was nicht der Standard ist).


Nach einigen Tests haben wir außerdem festgestellt, dass der Inhalt (DB) mithilfe der SAP-LZA-Komprimierung komprimiert gesendet wird und die Parameter (2810 14087 im Wireshark-Beispiel) die komprimierte bzw. die unkomprimierte Größe angeben.
Von diesem Zeitpunkt an konnten wir einen einfachen Druckauftrag nach dem SAPLPD-Protokoll programmieren und mit den Tests beginnen.
Anatomie der Bedrohung: Vom Druckauftrag bis zur RCE
Bei dieser Sicherheitslücke handelt es sich um einen Pfadtraversal-Fehler im DS -Befehl, der es nicht authentifizierten Angreifern ermöglicht, beliebige Dateien auf den Host-Server zu schreiben.
Es war zwar eine bestimmte Abfolge von Befehlen erforderlich, doch wir haben im DS-Befehl eine Schwachstelle im Zusammenhang mit Pfaddurchlauf entdeckt, die es einem Angreifer ermöglichte, den Dienst dazu zu bringen, einen beliebigen Inhalt ebenfalls in eine Protokolldatei zu „schreiben“. Letztendlich kann ein Angreifer eine beliebige Datei auf dem Windows-Server schreiben oder überschreiben. Die maximale Länge des Injektionspunkts beträgt 40 Zeichen, was die Auswirkungen zwar etwas einschränkt, aber dennoch ausreicht, um eine Remote-Code-Ausführung (RCE) zu erreichen.


Doch trotz dieser Einschränkung möchten wir, um zu verdeutlichen, wie kritisch diese Sicherheitslücke sein kann, aufzeigen, wie sie zur Ausführung von Befehlen aus der Ferne genutzt werden kann.
Pfaddurchlauf bis hin zu RCE
Die Analyse der SAPSprint-Protokolldateien im Rahmen routinemäßiger Abfragen ergab, dass der Dienst versucht, mehrere DLLs mit fest codierten Namen von drei bestimmten Speicherorten vorab zu laden:

Die Anwendung führt dies nach dem Empfang des Inhalts, aber natürlich vor der eigentlichen Druckverarbeitung durch.
Uns ist aufgefallen, dass zwei davon, nämlich OCR.dll und barcode64.dll, fehlten. Wie wäre es also mit ein bisschen DLL-Hijacking? Allerdings müssen wir das mit einer Nutzlast von maximal 40 Zeichen bewerkstelligen.
Der ursprüngliche Pfad der Sicherheitslücke lautet in unserer Standardkonfiguration:
„C:\ProgramData\SAP\SAPSprint\Logs“.
Der Pfad „../../../../“, der zu C:\ führt, ist bereits 12 Zeichen lang. Der gesuchte vollständige Pfad darf nicht länger als 28 Zeichen sein. Dies trifft auf die Dateien „OCR.dll“ und „barcode64.dll“ zu, die sich direkt im Windows-Pfad befinden.
Nun können wir Befehle ausführen, indem wir eine DLL erstellen, die während des DLL_PROCESS_ATTACH-Ereignisses WinExec aufruft:

Kompilieren Sie die Datei und laden Sie sie als „Print-Inhalt“ auf den Zielserver unter C:\Windows\ORL.dll hoch; sie wird unmittelbar danach vom SAPSprint-Dienst geladen. Dadurch wird die Befehlsausführung ausgelöst.

SAP Java Reverse Shell
An dieser Stelle gibt es mehrere Möglichkeiten, einen bequemeren Zugriff zu erlangen, beispielsweise über eine Reverse-Shell. Eine Möglichkeit besteht darin, eine Java-Datei hochzuladen, deren Kompilierung und Ausführung wir aus der Ferne erzwingen. Um sicherzugehen, dass das System über Java verfügt, können wir auch die SAP-JVM selbst hochladen.
Phase 1:
Der Angreifer lädt die SAP-JVM hoch.
| Angreifer$ ./sapsprint_upload_file.sh Ziel 515 sapjvm_8.zip ../../../../Temp/sapjvm_8.zip |
Phase 2:
Der Angreifer lädt eine klassische Java-Revershell hoch.
| Angreifer$ ./sapsprint_upload_file.sh Ziel 515 revershell_payload.java ../../../../Temp/f |
Phase 3:
Der Angreifer bereitet eine schädliche OCR.dll vor:

Dann lädt es hoch.
| attacker$ ./sapsprint_upload_file.sh 192.168.56.101 515 OCR.dll ../../../../Windows/OCR.dll |
Da es sich bei dem „Upload“ ebenfalls um einen vollständigen Druckauftrag handelt, lädt SAPSprint die neue OCR.dll und löst dann die Befehlskette aus, die eine Verbindung zum System des Angreifers herstellt.

Risikominderung
Die Sicherheitslücke wurde durch den SAP-Sicherheitshinweis 3630595 – [CVE-2025-42937] Verzeichnisüberquerungs-Sicherheitslücke im SAP Print Service – behoben. Bitte lesen Sie den zugehörigen Hinweis 3636888 – FAQ zum SAP-Sicherheitshinweis 3630595, da dabei Systemausfallzeiten erforderlich sind.
Eine Abhilfe und zugleich bewährte Vorgehensweise besteht darin, die SNC-Verschlüsselung für die Inhaltsübertragung zu aktivieren (standardmäßig „Keine Sicherheit“): Wählen Sie im Druckoptionen-Editor unter „SNC-Optionen“ den Punkt „SNC-Modus“ und aktivieren Sie das Kontrollkästchen „Nur sichere Verbindungen“. Die Option „Beide Verbindungen“ reicht nicht aus, um den Angriff zu verhindern.

Weitere Informationen zur Konfiguration (Installation von SAPCryptoLib, SPAD-Konfiguration, verschiedene Betriebsmodi usw.) finden Sie im SAP-Hinweis 96079 – Konfiguration von SAPSprint mit SNC sowie im allgemeinen SAP-Hinweis 894444 – Tool für serverbasiertes Drucken unter Microsoft Windows (SAPSprint).
Sind Sie bereit, diese Sicherheitslücke zu beheben?
Eine vollständige Schritt-für-Schritt-Anleitung zum Patchen Ihrer Systeme und zur korrekten Konfiguration von SNC finden Sie in unserem Leitfaden zur Behebung von CVE-2025-42937.
