Deutsch | English | Español

Gefahren im SAP Transportwesen: Wie man in einer Minute sein Gehalt verdoppelt

22. Juni 2018 | Von Thomas Fritsch, Virtual Forge GmbH

Die Research-Abteilung der Virtual Forge hat eine extrem kritische Sicherheitslücke im Transportwesen entdeckt.

TA_Banner_DE

Was macht diese Lücke so gefährlich:

  • Man kann den Inhalt beliebiger Tabellen im Produktionssystem ändern oder löschen
  • Die Manipulation wird in Form eines „Trojaners“ unbemerkt von einem ahnungslosen Entwickler exportiert
  • „Kritische Objekte“-Prüfungen erkennen den Angriff nicht
  • Der Angriff hinterlässt fast keine Spuren
  • Die schadhaften Einträge können insbesondere auch über externe Transportaufträge eingeschleust werden

Ausgangspunkt für einen Angriff sind die sogenannten logischen Objekte des Customizings. Ein sehr oft verwendeter Vertreter dieser Objekte sind z.B. Rollen.

Wie alle logischen Objekte, werden Rollen durch einen Satz von Informationen aus verschiedenen Tabellen abgebildet. Welche Tabellen dies sind und wie sich die Tabellenschlüssel der für eine bestimmte Rolle relevanten Tabellensätze zusammensetzen, ist in der Tabelle OBJSL hinterlegt. Diese Tabelle ist nicht direkt pflegbar, sondern wird indirekt über die Transaktion SOBJ in Form einer Stückliste gepflegt:

Fig1DEFig2DE

 

 

 

 

 

 

 

 

 

 

Zur Spezifizierung der relevanten Schlüssel stehen dabei mehrere Platzhalter zur Verfügung:

                               /C:        Mandant
                               /L:         Sprachenschlüssel
                               /&:         Name des konkreten logischen Objekts
                               /*:          beliebige Zeichenkette

Damit nicht beliebige Tabellen mit beliebigen Schlüsseln in die Stückliste übernommen werden können, führt SAP beim Sichern der Einstellungen mehrere Prüfungen durch. So wird unter anderem untersucht, ob der Platzhalter /& im Tabellenschlüssel verwendet wird (Feld Objektkey).

Wird eine Rolle in einen Transportauftrag aufgenommen, so wird in der Objektliste des Auftrags lediglich das logische Objekt „Rolle“ ( R3TR ACGR <Rollenname> ) aufgezeichnet. Die Auswertung der Stückliste erfolgt zum Zeitpunkt des Exports zur Laufzeit. Man kann sie sich aber auch jederzeit durch Doppelklick auf die Rolle in der Objektliste anzeigen lassen:

Fig3DEFig4DE

 

 

 

 

 

 

 

 

 

 

Allerdings wird dies bei logischen Objekten niemand machen.

Anders als bei anderen Customizing-Objekttypen (z.B. Pflegeview-Daten, Viewcluster-Daten) werden die Informationen in Abb. 4 nicht in den Transportauftrags-Tabellen E071 oder E071K persistiert.

Missbrauch des Verfahrens

Entwickler besitzen auf dem Entwicklungssystem umfangreiche Berechtigungen und können jede beliebige Tabelle mindestens per kurzem ABAP-Report manipulieren. Somit kann ein Angreifer zunächst den Inhalt der gewünschten Tabelle anpassen und fügt diese dann der Stückliste für Rollen mit den gewünschten Schlüsseln in Tabelle OBJSL hinzu:

Fig5DEFig6DE

 

 

 

 

 

 

 

 

 

 

Entscheidend ist dabei, dass hierbei im Gegensatz zur Pflege über die Transaktion SOBJ, keinerlei inhaltliche Prüfungen stattfinden. Dies gilt ebenfalls beim Export des Transportauftrags – dieser kann problemlos freigegeben und aus dem System exportiert werden.

Um alle Spuren zu verwischen, macht der Angreifer danach auf dem Entwicklungssystem beide Änderungen wieder rückgängig. Doppelklickt man jetzt in dem bereits freigegebenen Transportauftrag nochmals auf die Rolle, ist der verdächtige Eintrag aufgrund der dynamischen Ermittlung wieder verschwunden. Auch in den Zielsystemen steht der schadhafte Eintrag natürlich nicht in der Objektliste, da ja hier die Tabelle OBJSL die korrekte Information enthält.

Letztendlich kann man den Angriff nach dem Export nur noch an 2 Stellen entdecken – im Exportprotokoll und im Protokoll des Hauptimports, wenn der betreffende Auftrag in ein Folgesystem importiert wird:

Fig7DEFig8DE

 

 

 

 

 

 

 

 

 

 

Aber wer kommt schon auf die Idee, die Protokolle aller Transportaufträge durchzulesen?
Hat der Angreifer sein Ziel erreicht, kann er über den gleichen Weg natürlich auch den alten Datenstand wieder herstellen und somit die Verschleierung perfekt machen.

 

Vertrauen ist gut, Kontrolle ist besser!
Dieser Ausspruch sollte wohl nicht in allen Lebenslagen als Leitsatz dienen, im Bereich der IT Sicherheit ist er jedoch mehr als angebracht. Entwickler haben in aller Regel weitreichende Berechtigungen und benötigen diese in den Entwicklungssystemen für ein effizientes Arbeiten. Daher sollten sie auch vertrauenswürdig sein. Es ist jedoch die Verantwortung der Organisation, bekannte Sicherheitslücken auch für die eigenen Mitarbeiter weitestgehend zu schließen und somit für eine sichere IT Landschaft zu sorgen.

 

Schlussfolgerung

Die hier beschriebene Sicherheitslücke zeigt das ganze Gefahrenpotenzial des SAP Transportwesens beispielhaft auf. SAP-Kunden sollten jetzt reagieren und sich umfassend vor solchen Angriffen schützen! Der TransportProfiler von Virtual Forge ist weltweit das einzige Produkt, dass solche Manipulationsversuche erkennen kann. Während andere Tools lediglich eine simple Prüfung der Objektlisten gegen eine Liste kritischer Objekte durchführen (die man als Kunde auch noch selbst definieren muss), liest TransportProfiler für seine Analysen direkt den Inhalt der Transportdateien aus. Basierend auf dem Know-How aus 12 Jahren Security-Forschung im Bereich SAP und angetrieben durch permanente Untersuchungen unseres Research-Teams, führt TransportProfiler über 100 vordefinierte Prüfungen durch.

Handeln Sie, bevor es zu spät ist und vereinbaren Sie noch heute einen Präsentationstermin, oder nutzen Sie die Möglichkeit einer kostenlosen Schwachstellenanalyse Ihrer bisherigen Transportaufträge.

 

Topics: UnderstandYourRisk



@Virtual_Forge auf Social Media:

social_twitter_active.png social_xing_active.png social_linkedin_active.png social_google_active.png