Security in der Web-App Entwicklung

Mir wird immer mal wieder die Frage nach Security in der Fiori-Entwicklung gestellt. Ich muss vorwegnehmen, dass ich hier aus Sicht der Entwicklung schreibe und Fragestellungen auch aus dieser Warte betrachtet werden. Lassen wir hier also betriebliche und netzwerk-technische Aspekte mal grosszügig ausser Acht.

Security und SAP, ob nun mit ABAP oder JavaScript, werden erfahrungsgemäss relativ locker gehandhabt. Klar, wir diskutieren Berechtigungen wie den Buchungskreis usw. legen Berechtigungsobjekte und Rollen an. Aber es bleiben offenen Fragen, beispielsweise die SQL-Injection in ABAP? Dieses Thema nahm die SAP zwar schon vor ein paar Jahren an der TechEd und anderen Veranstaltungen auf, aber so richtig durchgesetzt hat es sich noch nicht – zumindest nehme ich das so wahr.

Aber zurück zur Eingangsfrage: Betrachten wir mal ausschliesslich Web-Anwendungen, also die liebgewordenen Fiori Apps. Was soll da nun anders sein als in einem ABAP-Report? Wir haben eine Schnittstelle! Eine OData-Schnittstelle. Weshalb ist das so wichtig? Im Gegensatz zu einem SAP GUI ist es für uns in diesem Zusammenhang nicht realisierbar den Browser und erst recht die Schnittstelle unter Kontrolle zu haben. So haben wir bereits OData-Schnittstellen gebaut, die sowohl eine Fiori-App bediente als auch eine Portal-Seite, die nichts mit SAP zu tun hat. Deshalb ist es wichtig, ein Augenmerk auf die Security zu legen.

Wenn mir die Eingangsfrage gestellt wird, dann denke ich meistens: «Wow, das Thema ist angekommen.» Eine präzise Antwort darauf zu liefern, wenn möglich noch während dem Kaffee, der sich mit fortschreitender Zeit dem Ende zuneigt, ist dann schon etwas komplizierter. In den meisten Fällen erwähne ich dann die OWASP Top 10. Die OWASP Top 10 ist eine Liste der zehn kritischsten Sicherheitsrisiken für Webanwendungen. 2003 ging dieses Projekt an den Start und bringt alle paar Jahre eine aktualisierte Liste heraus. Grundlage der Top 10 ist ein riesiger Datenpool weltweiter Unternehmen, die auf Anwendungs-Sicherheit spezialisiert sind. Die letzte Version wurde Ende 2017 veröffentlicht – hier geht es zur aktuellen Übersicht.

Zugegeben, in dieser Liste findet man Punkte, die eher die Basis angehen oder im SAP-Dasein vielleicht weniger relevant zu scheinen mögen. Aber es lohnt sich trotzdem diese mal etwas genauer zu studieren. In der folgenden Abbildung sind die aktuellen Top 10 Risiken und dessen Veränderungen zu 2013 abgebildet:

Jede dieser Risiken ist auf einer Seite kompakt beschrieben:

  • Bedrohungsquellen
  • Angriffsvektoren
  • Verbreitung
  • Auffindbarkeit
  • Technische Auswirkungen und Auswirkungen auf das Unternehmen.

Ein paar Beispiele:

A1: Injection: Ein bekanntes Beispiel ist die SQL-Injection. Diese ist eigentlich nur bei dynamischem SQL in ABAP relevant. Aber genau das hat man ja oft in OData… Und nicht vergessen darf man die Betriebskommandos.

A3: Sensitive Daten: Eine Applikation verwendet eine fortlaufende Nummer für Sicherheitsrelevante Daten. In Mails wird eine URL mit dieser ID mitgesendet, z.B. die ID 800002. Mit dieser können dann persönliche Daten eingesehen werden. Der nächste Kunde bzw. Fall erhält 800003… Ein Einfaches, dieses von Hand zu ändern und fremde Daten einzusehen. Das passierte einem sehr grossen Bahnunternehmen in Europa.

A7: Cross-Site Scripting: In einem Eingabefeld wird JavaScript so eingegeben, so dass die Applikation weiteren JavaScript-Code nachladet und diesen ausführt, z.B. einen Key-Logger…

Ich persönlich finde mit dem Studium von diesen OWASP Top 10 kann man sich gut in das Thema einlesen: Die Top 10 bietet eine kompakte, anschauliche Übersicht und dazu Tipps, wie man diese Lücken findet.

Der Blog wurde für itelligence AG betreffend der itelligence World 2018 am 20. September 2018 in Regensdorf (ZH) publiziert.