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

Microsoft nennt weitere Details zu kostenpflichtigen Patches für Windows 10

Erstmals liegen Preise für Verbraucher vor. Sie zahlen weniger als Geschäftskunden. Dafür beschränkt Microsoft den…

8 Stunden ago

Microsoft verschiebt erneut Copilot Recall

Die Entwickler arbeiten noch an weiteren „Verfeinerungen“. Windows Insider erhalten nun wohl eine erste Vorschau…

1 Tag ago

GenKI im Job: Mitarbeitende schaffen Tatsachen

Laut Bitkom-Umfrage werden in jedem dritten Unternehmen in Deutschland private KI-Zugänge genutzt. Tendenz steigend.

1 Tag ago

97 Prozent der Großunternehmen melden Cyber-Vorfälle

2023 erlitten neun von zehn Unternehmen in der DACH-Region Umsatzverluste und Kurseinbrüche in Folge von…

1 Tag ago

„Pacific Rim“-Report: riesiges, gegnerisches Angriffs-Ökosystem

Der Report „Pacific Rim“ von Sophos beschreibt Katz-und-Maus-Spiel aus Angriffs- und Verteidigungsoperationen mit staatlich unterstützten…

1 Tag ago

DeepL setzt erstmals auf NVIDIA DGX SuperPOD mit DGX GB200-Systemen

NVIDIA DGX SuperPOD soll voraussichtlich Mitte 2025 in Betrieb genommen und für Forschungsberechnungen genutzt werden.

1 Tag ago