Bedeutung des SAP-Gateways für die Sicherheit
Nachfolgend 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-Datei: 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).
Bei Angriffen von Systemen, für die ein zu offener Allow-Eintrag in der Reginfo eingetragen ist, besteht Gefahr. 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>
RFC-Callback-Angriff
Als TP-Name wird IGS.<SID> angegeben. Der Angreifer gibt sich als Internet Graphics Service (IGS) aus. Das Programm IGS.<SID> wird aufgerufen, sobald der IGS von einem Benutzer verwendet wird.
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 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 Angreifersystem können dazu führen, dass ein Angriff auf das System möglich ist.
Ein Proof of Concept wurde bereits von Dmitry 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). Dabei wird eine Type-T-RFC-Verbindung zum angegriffenen System mit dem Programm sapxpg eingerichtet. Als Nächstes wird in SM49 ein externes OS-Kommando angelegt. Dieses Kommando wird mit der RFC-Type-T-Verbindung auf dem anzugreifenden System ausgeführt. Da diese Einstellungen beziehungsweise Kommandos auf dem Angreifer-System stattfinden, sind Berechtigungschecks irrelevant. Einen Schutz bietet neben guter Netzwerk-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. SAP-Note 1408081 bietet dafür ein gutes Grundgerüst. Diese Grundeinstellungen können anschließend durch Protokollanalyse gegebenenfalls in Kombination mit dem Simulationsmodus erweitert werden. Dadurch wird erreicht, dass Reginfo und Secinfo relativ einfach richtig konfiguriert werden.