zurück zur Übersicht

SAP® Security: ABAP Code Injection erkennen

Praktisch aber gefährlich

Externe SAP®-Tools nutzen immer wieder Funktionen wie „RFC_ABAP_INSTALL_AND_RUN“, um Anwendern die Möglichkeit zu geben, unter Umgehung des Transportsystems Funktionen und ABAP-Programme auf SAP®-Systemen auszuführen. Dies ist vermutlich auch der Hintergrund der kürzlich entdeckten Schwachstelle CVE-2016-9832  in einer Software zur Prüfung von Benutzerrollen und -rechten.

Das Gefährdungspotential besteht darin, dass in SAP® der ABAP-Entwickler für die Berechtigungsprüfung verantwortlich ist. Das bedeutet, es gibt keine Instanz zwischen ABAP-Coding und Datenbank, welche die Zulässigkeit der Anweisung überprüft.

Gelingt es also einem Angreifer ABAP-Code zu injizieren, stehen ihm alle Möglichkeiten zur Manipulation von Daten offen. Beispielsweise ist die Ausführung von Datenbankaktivitäten per SQL ohne weitere Berechtigungsprüfung möglich. Abhängig von Berechtigungen ist auch die Ausführung von Betriebssystemkommandos möglich oder sogar Aktivitäten auf entfernten Systemen, wenn zu diesen eine RFC-Verbindungen besteht.

Risikoreiche Basisfunktion

Obwohl SAP® diese Möglichkeiten out-of-the-box bietet und dies als Feature versteht, gibt es Möglichkeiten, sich effektiv vor den impliziten Sicherheitsproblemen zu schützen:

  • Für Produktivsysteme muss die Systemänderbarkeit ausgeschaltet sein. Muss diese temporär aktiviert werden, ist das Loggen aller Änderungen im Repository und Customizing Pflicht.
  • Die strikte Beschränkung der Entwicklerrechte auf Produktivsystemen auf einen sehr kleinen Benutzerkreis (z. B. Emergency-User) und Logging aller Aktivitäten dieser Benutzer ist ebenso Pflicht.
  • Für die Generierung dynamischer Programme wird auf NetWeaver 7.40 die Berechtigung für die Transaktion SE38 und das Berechtigungsobjekt S_DEVELOP benötigt. Diese Berechtigungen müssen konsequent überwacht werden.
  • Ab NetWeaver 7.4. mit Unified Connectivity (UCON) können Whitelists erstellt werden, um nicht benötigte RFC-fähige Funktionsbausteine zu deaktivieren.

Erkennung verdächtiger Aktivitäten über SIEM mit agileSI™

Dynamisch generierter ABAP-Code wird mit der Nachrichten-ID „BU4“ im Security Audit Log angezeigt (Audit-Klasse „Sonstige Ereignisse“). Durch Ausleiten dieser sicherheitsrelevanten Ereignisse in ein SIEM-System und Erstellung entsprechender Regeln zur automatischen Alarmierung kann generisches Coding im Z- oder Y-Namensraum zuverlässig erkannt werden.

abap-code-injection_1

Abbildung 1: Empfohlene Einstellung Security Audit Log (SM19)

  • Sicherung der Ereignisse der Transaktion STAD (Workload Analysis) und des Security Audit Log in SIEM oder Log Management zur Gewährleistung der Nachvollziehbarkeit, beispielsweise bei Ausführung von „RFC_ABAP_INSTALL_AND_RUN“.

abap_code-injection_2
Abbildung 2: Beispielevents im Security Audit Log bei Generierung dynamischer Programme

abap-injection_3
Abbildung 3: Ein Auszug aus der STAD zeigt die Code-Injezierung

Bei der Umsetzung der oben beschriebenen Maßnahmen kann agileSI™ als dedizierte SAP® Security Monitoring Lösung optimal unterstützen und für schnelle Ergebnisse sorgen.

  • Sicherung wichtiger Logdateien wie dem Security Audit Log und Ausleitung in Logmanagement und SIEM-Lösungen;
  • Sicherung aufgerufener RFC-Funktionen mit Benutzer, Funktionsbausteinname, Quell- und Zielsystem als Grundlage für Whitelisting von RFC-Aktivitäten;
  • Überwachung der Audit-File Konfiguration;
  • Erkennung kritischer Berechtigungszuweisungen;
  • Überprüfen der Systemänderbarkeit;
  • Alarmierung bei kritischen Vorfällen und Ereignissen.

Schreibe einen Kommentar