Wie vielen Lesern bereits bekannt sein dürfte, ist die Absicherung des SAP Gateways von entscheidender Bedeutung für die Sicherheit von SAP-Systemen. Aber was kann passieren, wenn das Gateway falsch oder unsicher konfiguriert ist?
In diesem Beitrag soll auf diese Fragestellung eingegangen werden. Es wird anhand von unsicheren reginfo und secinfo ACL-Dateien gezeigt, welche Angriffe auf SAP-Systeme möglich sind.
Dies soll nicht als eine Anleitung zum Angreifen von SAP-Systemen verstanden werden. Es wird lediglich darauf aufmerksam gemacht, wie wichtig RFC Gateway Sicherheit für die Absicherung der Systeme ist.
Angriff auf Systeme mit unsicherer reginfo ACL
Nehmen wir an, dass unser SAP Basis Administrator die reginfo ACL unsicher eingestellt hat. Das kann beispielsweise durch eine der folgenden Konfigurationen erfolgen:
- gw/acl_mode = 0 und die reginfo Datei existiert nicht.
- gw/sim_mode = 1. Dadurch wird die implizite „Deny all“-Zeile entfernt. Um eine Unterbrechung des SAP-Systems zu verhindern, wird der Simulationsmodus normalerweise während der Einrichtung von secinfo und reginfo aktiviert.
- Bei Angriffen von Systemen, für die ein zu offener Allow-Eintrag in der reginfo eingetragen ist.
Beispielsweise: P TP=* HOST=erpdev.vclass.local
In diesem Fall kann ein Angreifer beliebige Programme bei dem Gateway registrieren. Er könnte folgende Konfiguration für einen Angriff wählen:
./programm -a IGS.<SID> -g <IP / Host des angegriffenen Systems> -x sapgw<xx>
Als TP-Name wird IGS.
Ein Angreifer könnte dieses Verhalten ausnutzen, um einen RFC-Callback-Angriff auszuführen. Wird der registrierte Server (und somit der implementierte Funktionsbaustein) aufgerufen, besteht automatisch ein Verbindungshandle. Mit diesem Verbindungshandle können vom Angreifer beliebige andere Bausteine im ABAP aufgerufen werden. In der Praxis würde ein Angreifer beispielsweise einen Benutzer anlegen und diesem Benutzer SAP_ALL (oder vergleichbare Berechtigungen) zuweisen.
Bei diesem Beispiel werden somit zwei Schwachstellen eines SAP-Systems ausgenutzt, die beide in der Praxis häufig in Systemen anzutreffen sind. Eine gut konfigurierte reginfo ACL würde den Angriff genauso verhindern, wie richtig konfigurierte RFC Callback Security.
Angriff auf Systeme mit unsicherer secinfo ACL
Angriffe auf eine unsichere secinfo ACL sind für einen Angreifer bei unsicherer Konfiguration noch einfacher durchführbar. Die Anforderungen für einen Angriff sind sehr ähnlich zur reginfo. Profilparameter gw/acl_mode = 0 (mit fehlender secinfo-Datei), gw/sim_mode = 1 oder ein zu offener Allow-Eintrag für ein Angreifer-System können dazu führen, dass ein Angriff auf das System möglich ist.
Ein Proof of Concept wurde bereits von Dmitry @_chipik Chastuhin erstellt (https://github.com/chipik/SAP_GW_RCE_exploit). Dabei kann ein beliebiges Betriebssystemkommando auf dem angegriffenen System ausgeführt werden. Das gleiche kann ein Angreifer aber auch mit einem normalen SAP-System erreichen (als Angreifer-System). Wir nehmen nachfolgend an, dass der Angreifer volle Kontrolle über das Angreifer-System hat. Dies ist in der Praxis relativ einfach, beispielsweise wenn ein Angreifer ein SAP-System auf seinem eigenen Laptop installiert und dieser Laptop ans Firmennetzwerk angeschlossen ist.
Für den eigentlichen Angriff erstellt der Angreifer eine Type T Verbindung zum angegriffenen System mit folgenden Einstellungen:
- Aktivierungsart: Anstarten auf explizitem Host
- Programm: sapxpg
(In manchen Fällen wird auch direkt das OS-Kommando verwendet. Der Angreifer bekommt jedoch in diesem Fall keine Antwort vom angegriffenen System zurück.) - Zielmaschine: <Anzugreifendes System>
- Gateway-Host: <Gateway-Host>
- Gateway-Service: <Port des Gateways>
![SAP Gateway RFC Destination SAP Gateway RFC Destination](/de/sites/all/assets/de/blog-article-image-sap-gateway2.png)
Als nächstes wird in SM49 ein externes Betriebssystem-Kommando angelegt.
Beispiel: Betriebssystem-Kommando: whoami
![SAP Gateway Kommando Z_OS1 SAP Gateway Kommando Z_OS1](/de/sites/all/assets/de/blog-article-image-sap-gateway3.png)
Dieses Kommando wird anschließend (durch Benutzung der davor angelegten RFC Type T Verbindung) auf dem anzugreifenden System ausgeführt:
![SAP Gateway Kommando Z_OS2 SAP Gateway Kommando Z_OS2](/de/sites/all/assets/de/blog-article-image-sap-gateway4.png)
Da alle diese Einstellungen bzw. Kommandos auf dem Angreifer-System stattfinden, sind Berechtigungschecks (z.B. für SM59) irrelevant. Die Annahme ist, dass der Angreifer volle Kontrolle über das Angreifer-System hat.
Ein Angreifer könnte auch die Verbindung aufzeichnen und gegenüber einem echten Angriffsziel wieder einspielen. Da keine Authentifizierung außerhalb der secinfo ACLs stattfindet, wäre dies ein lohnender Ansatz.
Einen Schutz bietet neben guter Netzwerks-Segmentierung nur eine gute secinfo-Konfiguration.
Richtige Konfiguration von reginfo und secinfo
Fraglich ist, wie reginfo und secinfo sicher einzurichten sind, ohne dass es zu einer Einschränkung des SAP-Systems kommt. Laut SAP-Note 1408081 (Basic settings for reg_info and sec_info) ist ein guter Ansatz, mit folgenden Anfangswerten zu starten:
reg_info:
#VERSION=2
#
# Hier werden weitere Zeilen der reginfo eingetragen.
# Letzte Zeile der reg_info
P TP=* HOST=internal,local CANCEL=internal,local ACCESS=internal,local
sec_info:
#VERSION=2
#
# Hier werden weitere Zeilen der sec_info eingetragen.
# Letzte Zeile der sec_info
P USER=* USER-HOST=internal,local HOST=internal,local TP=*
Bei reginfo und secinfo kommt es im nächsten Schritt darauf an, ob die Sicherheit oder Verfügbarkeit der Systeme (temporär) eine höhere Rolle spielt.
1.) Die Sicherheit spielt eine wichtigere Rolle
Die secinfo / reginfo wird mit der empfohlenen Einstellung aus SAP-Note 1408081 scharf geschaltet. Für hohe Sicherheit wird der Simulations-Modus jedoch nicht aktiviert. Schlägt eine Verbindung fehl, wird ein Eintrag in der secinfo / reginfo hinzugefügt. Fehlgeschlagene Anfragen können sehr einfach über eine Protokollanalyse hinzugefügt werden.
![SAP Gateway Protokollanalyse SAP Gateway Protokollanalyse](/de/sites/all/assets/de/blog-article-image-sap-gateway5.png)
2.) Die Verfügbarkeit spielt eine wichtigere Rolle
Die secinfo / reginfo wird mit der empfohlenen Einstellung aus SAP-Note 1408081 scharf geschaltet. Gleichzeitig aktiviert man temporär den Simulationsmodus (gw/sim_mode = 1). Jetzt werden temporär keine Anfragen an das Gateway abgelehnt. Auch Anfragen von Angreifern werden somit vollständig zugelassen. Nachdem alle Einträge, ebenfalls mit Protokollanalyse, hinzugefügt wurden, deaktiviert man den Simulationsmodus wieder. Durch den Simulationsmodus wurde eine Unterbrechung durch secinfo oder reginfo verhindert, bis die Einstellungen für secinfo und reginfo ACLs durchgeführt wurden.
Fazit
Zusammenfassend kann festgestellt werden, dass die richtige Konfiguration von secinfo und reginfo ein sehr wichtiger Punkt für die Sicherheit von SAP-Systemen ist. Falsche Konfigurationen bieten Angreifern eine einfache Möglichkeit, das System anzugreifen.
Wenn Sie Ihre Sicherheitsfähigkeiten weiter ausbauen möchten, empfehle ich Ihnen den Kurs AD680 Active Defense - SAP NetWeaver Security Workshop. Dieser Kurs wird in Kooperation zwischen Claranet und SAP durchgeführt und bietet Einblicke in viele sicherheitsrelevante SAP-Themen.