SQL-Injektion-Schwachstellen in SAP ABAP/4

Funktionsweise einer der häufigsten Sicherheitslücken, mit denen SAP-Sicherheitsbeauftragte konfrontiert sind, und wie man sie vermeiden kann.

Security-Teams kennen sie aus vielen Softwareprogrammen und auch in mit ABAP/4 programmierten Anwendungen taucht sie auf: die SQL Injektion, kurz SQLi. Angreifer nutzen dabei Schwachstellen in der Anwendungsschicht, um auf Information der Datenbank zuzugreifen, sie zu verändern oder bösartigen Code in SQL-Anweisungen einzuschleusen (z. B. über die Oberflächen des SAPGUI oder der Fiori-Anwendungen), sodass die Angreifer das Verhalten der Anwendung zu ihren Gunsten beeinflussen.

Fehlt die Eingabevalidierung, kann ein Anwender eine SQLi einfach durch die Oberfläche vornehmen. Dabei nutzt der Angreifer die SQL-Syntax, die von der SAP-Anwendung entgegengenommen wird und mit der im Programcode existierenden SQL-Anweisung verknüpft wird.  Gelingt es ihm, die bekannte SQL-Syntax so zu nutzen, dass die SQL-Anweisungen zu seinen Gunten verändert werden, können ein Zugriff auf sensible Daten, Manipulation von Datensätzen oder sogar das Löschen die Folge sein.

Beispiel wäre ein einfaches ABAP/4-Programm, das einem Benutzer die Suche nach Kundendatensätzen z.B. in einem definierten Buchungskreis ermöglicht. Es übernimmt die Benutzereingabe, verbindet sie mit der SQL-Anweisung und führt die Abfrage aus:

data: lv_last_name type string,
lt_customers type table of customers.

* get user input for last name

lv_last_name = request->get_form_field( ‘last_name’ ).

* build the SQL statement

select * from customers into table lt_customers
where last_name = lv_last_name.

* execute the query

execute.

Das Programm validiert oder bereinigt die Benutzereingaben jedoch nicht ordnungsgemäß, so dass ein Angreifer zum Beispiel mit dem SQL-String ‚ OR ‚1‘=’1 im Feld Nachnamen an die SQL-Anweisung übergeben kann. Damit ändert sich die SQL-Anweisung wie folgt:

select * from customers into table lt_customers

where last_name = ‘ ‘ OR ‘1’=’1′.

Diese geänderte Anweisung würde alle Kundendatensätze in die Datenbank zurückgeben und dem Angreifer den Zugriff auf sensible Informationen ermöglichen.

Maßnahmen gegen SQL-Injektion

Ein solcher Angriff kann nur schwer erkannt werden. Um den Angriffsvektor zu eliminieren, muss die Schwachstelle erkannt und durch Optimierung des Programmcodes unter hinzufügen einer Validierung, welche die Eingaben überprüft und bereinigt, bevor sie in der SQL-Anweisung verwendet werden.

Darüber hinaus können die Verwendung von vorbereiteten Anweisungen zwischen der Zuweisung der Parameter zum SQL-Statement das Risiko eines erfolgreichen Angriffs weiter verringern. Ebenso ist es in einigen Datenbanken so zum Beispiel SAP HANA möglich mit der Implementierung von Zugriffskontrollen auf Datenbankebene zusätzliche Schutzmechanismen zu etablieren.

Die Maßnahmen können jedoch nur dann ergriffen werden, wenn alle anfälligen Codefragmente gefunden werden. Das Finden der angreifbaren Programme stellt zumal die größte Herausforderung für SAP-Kunden dar. Die SAP-Applikation bietet zwar mit dem ABAP Test Cockpit (ATC), ein Werkzeug welches ABAP/4-Quellcode scannen kann. Es verfügt jedoch nicht über die Fähigkeit, um nach SQL-Injektion-Schwachstellen und anderen Sicherheitslücken im Code zu suchen, sondern fokussiert sich auf Probleme, die den operativen Betrieb beeinträchtigen.

Probleme im SAP-Standard muss der Hersteller korrigieren. Daher ist es wichtig, die SAP-Software mittels Sicherheitspatches immer auf dem neuesten Stand zu halten und Sicherheitsupdates zeitnah einzuspielen. Die kostenpflichtige Lösung SAP Code Vulnerability  Analyser (SAP CVA) wäre geeignet, verfügt allerdings über keine Integration zu Tools für Threat Detection oder Schachstellen Management. Ein Ausweg sind 3rd-Party-Lösungen wie die SecurityBridge Plattform für SAP. Diese enthält neben Angriffserkennung, Schwachstellen- und Patch Management auch einen Code Vulnerability Scanner, der den Umfang der SAP ATC-Tests um notwendige Sicherheitsprüfungen erweitert.

Fazit

Die beschriebene Schwachstellenart der SQL-Injektion kann zu kritischen Vorfällen führen, die ein erhebliches Sicherheitsrisiko für die SAP-Anwendung darstellen. SAP-Kunden können das Risiko eines erfolgreichen Angriffs nur dann verringern, wenn sie regelmäßige Schwachstellenscans durchführen können, um so die gefunden Schwachstellen gemessen am Risiko bewerten und zu beheben.

Themenseiten: ABAP, SAP, SQL-Injektion, Schwachstellen, SecurityBridge

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu SQL-Injektion-Schwachstellen in SAP ABAP/4

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *