Categories: Anzeige

SQL-Injektion-Schwachstellen in SAP ABAP/4

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.

Frank Zscheile

Recent Posts

Neue Backdoor: Bedrohung durch Malvertising-Kampagne mit MadMxShell

Bisher unbekannter Bedrohungsakteur versucht über gefälschte IP Scanner Software-Domänen Zugriff auf IT-Umgebungen zu erlangen.

10 Stunden ago

BSI-Studie: Wie KI die Bedrohungslandschaft verändert

Der Bericht zeigt bereits nutzbare Angriffsanwendungen und bewertet die Risiken, die davon ausgehen.

1 Tag ago

KI-Wandel: Welche Berufe sich am stärksten verändern

Deutsche sehen Finanzwesen und IT im Zentrum der KI-Transformation. Justiz und Militär hingegen werden deutlich…

1 Tag ago

Wie ein Unternehmen, das Sie noch nicht kennen, eine Revolution in der Cloud-Speicherung anführt

Cubbit ist das weltweit erste Unternehmen, das Cloud-Objektspeicher anbietet. Es wurde 2016 gegründet und bedient…

1 Tag ago

Dirty Stream: Microsoft entdeckt neuartige Angriffe auf Android-Apps

Unbefugte können Schadcode einschleusen und ausführen. Auslöser ist eine fehlerhafte Implementierung einer Android-Funktion.

2 Tagen ago

Apple meldet Umsatz- und Gewinnrückgang im zweiten Fiskalquartal

iPhones und iPads belasten das Ergebnis. Außerdem schwächelt Apple im gesamten asiatischen Raum inklusive China…

2 Tagen ago