Ingo Biermann
25. April 2014

Die einfachen Dinge: Sicherheit und Robustheit im ABAP Coding

Die Business Application Security Initiative (BIZEC) nennt als häufigste Schwachstellen in ABAP Coding in Bezug auf Sicherheit die folgenden Punkte:

  1. ABAP Command Injection
  2. OS Command Injection
  3. Native SQL Injection
  4. Improper Authorization
  5. Directory Traversal
  6. Direct Database Modifications
  7. Cross-Client Database Access
  8. Open SQL Injection
  9. Generic Module Execution
  10. Cross-Site Scripting
  11. Obscure ABAP Code

Schaut man sich die Liste genauer an, dann erkennt man zwei Hauptgruppen:

  • fehlende oder fehlerhafte Berechtigungsprüfungen
  • Injection Probleme
Beitragsbild-Wie Sie Ihre SAP-Systemlandschaft optimal auf S_4HANA vorbereiten
In diesem Webinar erfahren Sie, welche Technologien der SAP für der Umstieg auf S/4HANA wirklich wichtig sind und wie Sie das volle Potenzial von S/4HANA ausschöpfen.

Berechtigungsprüfung liegt in der Hand des Entwicklers

ABAP-Entwicklungen können auf das hervorragende Sicherheitsframework des SAP NetWeaver Application Servers zurückgreifen. Damit ist es möglich wasserdichte Berechtigungsprüfungen zu implementieren, das bestehende Rollenkonzept und entsprechende Tools zu nutzen und zur Laufzeit auf Unterstützung wie zum Beispiel die Protokollierung im Security Audit Log zurückzugreifen. Es handelt sich um wirklich mächtige Werkzeuge – man muss sie nur einsetzen.

Die einfachen Dinge: Sicherheit und Robustheit im ABAP Coding
Wir sind Ihr Dienstleister für die Entwicklung, die Ihr SAP noch besser macht.
Schon in der Ideenphase unterstützen wir Sie bei der Definition der Anforderungen. Die Konzeption und Umsetzung erfolgt durch unsere SAP Experten.

Sie erhalten die Komplettlösung – Ihr Projekt machen wir zu unserem Projekt. Mit professionellem Projektmanagement sicheren wir den Projekterfolg.

Gerne spreche ich mit Ihnen über Ihre Ausgangslage und zeige Lösungsmöglichkeiten auf. Auf Wunsch unterbreite ich Ihnen im Anschluss ein unverbindliches Angebot.

Kontaktieren Sie mich: Telefon 0211.9462 8572-16 oder per E-Mail info@erlebe-software.de
Ingo Biermann, Fachbereichsleiter

 

Die einfachen Dinge richtig machen

Ein Beispiel: Der Befehl CALL TRANSACTION führt eine Transaktion aus. In der gezeigten Form wird die Transaktion gestartet – ungeachtet der Frage, ob der User sie direkt im Dialog starten darf oder nicht. Um die passende Berechtigungsprüfung muss sich der Entwickler aber selbst kümmern. Das ist natürlich kein großes Problem, wenn es auch gemacht wird.

ABAP Coding: Passende Berechtigungsprüfung erstellen

ABAP Coding: Passende Berechtigungsprüfung erstellen

Ähnlich verhält es sich mir der Auswertung von Rückgabewerten. Es ist das kleine Einmaleins und wird doch oft vernachlässigt.

ABAP Coding: Rückgabewerte auswerten

ABAP Coding: Rückgabewerte auswerten

Wenn der sy-subrc einer Berechtigungsprüfung nicht korrekt ausgewertet wird oder die Eingabefelder nicht richtig befüllt werden, dann hilft das schönste SAP Berechtigungskonzept nicht weiter.

Ein einfach konstruiertes Beispiel zum zweiten Thema SQL-Injection:

Beispiel SQL-Injection

Beispiel SQL-Injection

SQl injection

SQl injection

Und so schreibt ein Angreifer etwas auf die Datenbank, das sicher nicht im Sinne des Erfinders bzw. Programmierers war. Dazu braucht er nur mittelmäßig intelligente Vermutungen über den Aufbau von Programm und Datenbank.

Beispiel Ausgabe nach einem Angriff auf die Datenbank

Beispiel Ausgabe nach einem Angriff auf die Datenbank

Beispiel Codeänderung bei SQL injection

Beispiel Codeänderung bei SQL injection

Robuste Softwareentwicklung

Die Beispiele zeigen, wie wichtig ein Prinzip ist, das man aus dem Lehrbuch für gute Programmierung kennt: Robustheit. Eine Software soll auch dann weiterlaufen und korrekte Ergebnisse liefern, wenn das Umfeld nicht den ursprünglichen Erwartungen entspricht.

Speziell auf die oben gezeigte Beispiele bezogen bedeutet das: Durch das Vermeiden einfacher Fehler lassen sich grundlegende Sicherheitsprobleme bereits ausschließen:

  • Fehler richtig behandeln und Rückgaben prüfen
  • Eingabedaten validieren, bevor sie verwendet werden

Only good Code ist good Code

Dies sind nur Beispiele dafür, wie Code-Qualität zur Verbesserung der Sicherheit beiträgt. Darüber hinaus verbessert sie auch Wartbarkeit und Stabilität der Software und auch die Datenqualität. Auf lange Sicht gesehen zahlen sich Investitionen in Code Qualität also in jedem Fall aus.

Die Werkzeuge dafür sind

  • Entwicklungsrichtlinien und Checklisten
  • Verwendung automatischer Codeprüfung vom einfachen Syntax Checker bis zum Tool für Codeanalyse
  • Etablierung von Change Management Prozessen, Testmanagement, Code Reviews, etc.

Deren Einführung kann allerdings nur schrittweise erfolgen. Es bedarf zunächst einer sinnvollen Zieldefinition und einer Roadmap. Die Entwickler müssen ins Boot geholt werden und die Initiative mittragen. Phasenweise kann dann neues und bestehendes Coding Schritt für Schritt in die Prüfung mit einbezogen werden. Solange, bis sich am Ende nichts mehr transportieren lässt, was noch Fehler in der Prüfung verursacht.

Unser Whitepaper zum Thema Die 7 Todsünden der ABAP Performance

Whitepaper: Die 7 Todsünden der ABAP Performance

In diesem E-Book erfahren Sie die 7 Todsünden der ABAP-Performance.

“Get Clean” und “Stay Clean”

Wenn man dann mit einiger Anstrengung eine saubere Codebasis geschaffen hat, ist das folgende “Sauber bleiben” leichter. Vorausgesetzt natürlich, man bleibt konsequent bei den eingeführten Prozessen und Automatismen.

Möchten Sie mehr über robuste Softwareentwicklung und Code-Qualitäts-Initiativen erfahren? Dann kontaktieren Sie mich!

Ingo Biermann

Ingo Biermann

Als Management- und Technologieberater unterstütze ich seit mehr als 15 Jahren große und mittelständische Unternehmen in Fragen der IT-Strategie und bin unterwegs in unterschiedlichen SAP-Themen wie SAP S/4HANA, User Experience und SAP Entwicklung.

Sie haben Fragen? Kontaktieren Sie mich!



Das könnte Sie auch interessieren

Ist es möglich, die Einhaltung von Programmier-Richtlinien mit nur einem Klick umzusetzen? In dieser mehrteiligen Blogserie wird gezeigt, wie das Tool 'Pretty_Printer' genutzt und erweitert werden kann, um bei der […]

weiterlesen

Ist Ihnen aufgefallen, dass sich die empfohlene Syntax des zentralen Select Statements von OpenSQL geändert hat, die für Sie und Ihre Mitarbeiter relevant sind? Mir ist durch Zufall aufgefallen, dass […]

weiterlesen

Nachdem wir bereits in dem vorherigen Beitrag der Serie: Unit Testing Testklassen festgestellt haben, wie genau eine Testklasse aussieht, demonstriere ich das ganze anhand eines simplen Beispiels nun im Einsatz.

weiterlesen

Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.





Kontaktieren Sie uns!
Alexander Koessner-Maier
Alexander Kössner-Maier Kundenservice