SAP-Sicherheit: Änderungs- und Transportsystem

Es gibt einige Komponenten in SAP, die bereits seit den Anfängen von SAP R/3 bestehen. Eine dieser Komponenten ist das SAP Change and Transport System (CTS). Es wurde mit SAP Basis 3.1H eingeführt und hat die meisten manuellen Aufgaben ersetzt, die zuvor auf Betriebssystemebene durchgeführt werden mussten, um einen Transportauftrag von System A nach System B zu übertragen.
Während es ein Jahrzehnt lang keine wesentlichen Änderungen an dieser wichtigen Kernkomponente gab, wurde sie in den letzten 13 Jahren erweitert, um den Transport von Nicht-ABAP-Objekten (Enhanced CTS oder CTS+) sowie die Synchronisation abhängiger Änderungen über verschiedene SAP-Landschaften hinweg (Central CTS oder cCTS) zu unterstützen.
Die zu transportierenden Objekte sind in Transportaufträgen enthalten und können über die Objektliste des Transportauftrags angezeigt werden. Während Workbench-Objekte durch ihren Typ und Namen eindeutig identifiziert werden, ist es wesentlich schwieriger, die Daten zu identifizieren, die innerhalb eines Customizing-Objekts transportiert werden. Customizing-Objekte können sowohl als einzelne Tabellen als auch über generierte Pflegeobjekte transportiert werden. Pflegeobjekte werden über die Transaktion SOBJ gesteuert und können einen der folgenden Typen haben:

Mit Ausnahme des Dummy-Objekttyps (D) bestehen alle Pflegeobjekttypen aus einer oder mehreren Tabellen, einschließlich logischer Transportobjekte (L), die Dutzende verschiedener Tabellen umfassen können. So enthalten beispielsweise Rollen, die durch das logische Objekt ACGR repräsentiert werden , Daten aus 27 verschiedenen ACGR*-Tabellen.
Sicherheitsaspekte
Die Transportinformationen für die meisten Objekttypen werden in zwei verschiedenen Tabellen erfasst:
- E071: Hauptobjekt
- E071K: zugrunde liegende Tabellen und Tabellenschlüssel
In Ausnahmefällen, wenn Schlüsselfelder lange Zeichenfolgenwerte enthalten, wird auch die Tabelle E071K_STR zur Verwaltung der Tabellenschlüsselinformationen verwendet.
Um einen Überblick über die allgemeinen Informationen eines Customizing-Objekts zu erhalten, müssen im SAP Transport Organizer bis zu drei Ebenen der Objektliste überprüft werden.
Beispiel:
Ein Entwickler aktualisiert eine Überwachungslösung regelmäßig mit neuen Anpassungsinformationen. Zu diesem Zweck hat er eine Wartungssicht angelegt, und da es sich bei seinem Überwachungstool um eine nicht kritische, schreibgeschützte Anwendung handelt, bestehen die Daten seiner Wartungssicht alle Qualitätsprüfungen für die Produktion, ohne dass die Transportaufträge im Detail analysiert werden müssen.
Ein Blick in die Objektliste zeigt die Pflegesicht an:

Wenn Sie auf die Schaltfläche klicken, wird Folgendes angezeigt:

Durch Doppelklicken auf die Datenzeile werden Informationen zu der Tabelle angezeigt, die mit dem Transportauftrag transportiert werden soll:

Da bekannt ist, dass diese Art des Transports vom Qualitätssicherungsteam nicht genauer geprüft wird, könnte der Entwickler (oder jeder andere mit Zugriff auf das Entwicklungssystem, der davon weiß) nun die Definition der Pflegesicht ändern und die zugrunde liegende Tabelle durch eine Tabelle ersetzen, die kritische Daten enthält, z. B. die Tabelle USRBF2. Diese Tabelle enthält Daten des Berechtigungspuffers. Ein Transport in die Produktion bedeutet, dass die in der Entwicklung zugewiesenen (und gepufferten) Berechtigungen in die Produktion transportiert werden, sodass sie dort vorübergehend aktiv werden!
Schädliche Inhalte und Manipulationen lassen sich nur erkennen, wenn alle drei Ebenen der Objektliste überprüft werden.

Was ist noch entscheidender als „verborgen“? Unsichtbar!
Es gibt einen wesentlichen Unterschied zwischen logischen Customizing-Objekten (L) und den anderen Customizing-Objekttypen: Wenn ein logisches Customizing-Objekt in einem Transportauftrag erfasst wird, werden die Informationen zu den betroffenen Tabellen und Schlüsseln nicht dauerhaft in der Tabelle E071K (E071K_STR) gespeichert.
Auf den ersten Blick scheint ein Transportauftrag, der ein logisches Objekt enthält, auf dieselbe Weise verwaltet zu werden:
Objektliste:

Durch Doppelklicken auf die Rolle werden die einzelnen Tabellen und Schlüssel angezeigt, die Informationen zu dieser Rolle enthalten:

Die Abfrage der Tabelle E071K (oder E071K_STR) für diesen Antrag ergibt eine leere Liste! Wie aus der Kopfzeile des obigen Bildschirms ersichtlich ist, wird hier lediglich eine Schlüsselsimulation angezeigt. SAP liest die Informationen für dieses Bild dynamisch aus der Tabelle „Logical Object Definition“ aus. Dasselbe gilt beim Starten des Exports dieser Tabelle – auf Grundlage der dynamisch abgerufenen Informationen werden die entsprechenden Daten aus dem Entwicklungssystem extrahiert.
Ein Angreifer, der Zugriff auf das Entwicklungssystem hat, kann nun problemlos die Tabelle „Logical Object Definition“ manipulieren und der Definition einer Rolle weitere Tabellen hinzufügen (wie wäre es mit Gehaltsdaten?). Es ist sogar möglich, dieser Definition Workbench-Objekte hinzuzufügen!
Nachdem die bösartigen Einträge in das Repository eingefügt wurden, muss der Angreifer nur noch abwarten, bis jemand eine Rolle exportiert – ohne zu bemerken, dass dabei zusätzliche Daten exportiert werden!

Da die angezeigten Informationen dynamisch gelesen werden und die Manipulation nur auf dem Entwicklungssystem vorgenommen wurde, sind die eingefügten Einträge in der Objektliste des Transportauftrags auf keinem anderen System der SAP-Landschaft zu sehen. Wenn der Angreifer den zusätzlichen Eintrag in der Repository-Tabelle auf dem Entwicklungssystem wieder entfernt, wird der Eintrag auch dort unsichtbar!
Wie können SAP-Kunden ihre Systeme schützen?
Die Onapsis Research Labs diese Sicherheitslücke Anfang 2018 an SAP, woraufhin im Mai 2018 mit dem SAP-Sicherheitshinweis Nr. 2671160 ein Patch bereitgestellt wurde, der den Titel „Fehlende Eingabevalidierung im ABAP Change and Transport System (CTS)“ trug. Mit diesem Patch führt SAP einen neuen TMS-Parameter namens TLOGOCHECK ein. Es wird dringend empfohlen, die gepatchte SAP-Kernel-Version zu installieren und den Parameter TLOGOCHECK so zu konfigurieren, dass sein Wert mit den in der SAP-Sicherheitsnotiz empfohlenen Einstellungen übereinstimmt. Die neue Kernel-Version ermöglicht es dem Transportwerkzeug, durch einen Vergleich des transportierten Objekts mit seiner Definition im Zielsystem zu prüfen, ob Manipulationen an der Definition eines logischen Customizing-Objekts vorgenommen wurden.
Assess Platform unterstützt Onapsis-Kunden bei der automatisierten Überprüfung der Kernel-Version sowie der korrekten Einstellung des Parameters TLOGOCHECK auf allen Systemen.
