SAP ABAP Code Security: Die klassischen Schwachstellen

Maschinenraum · Reihe „SAP ABAP Code Security“, Teil 3 (Abschluss)

Im ersten Teil ging es um das Warum: dass der kundeneigene ABAP-Code die unterschätzte Angriffsfläche ist und warum die ABAP-Laufzeit zwar vor technischen, nicht aber vor logischen Fehlern schützt. Im zweiten Teil um das Wie: dass die Bereinigung ein Projekt ist — Get Clean für den Bestand, Stay Clean für den Betrieb.

Bleibt das Was. Welche Muster sind eigentlich gemeint, wenn von „kritischen Lücken im Eigencode“ die Rede ist? Statt sie hier in acht Einzelbeiträgen auszubreiten, gehen wir einen anderen Weg: Jedes Muster lebt als lauffähiges Beispiel im öffentlichen Repository — mit Negativbeispiel, sauberer Gegenvariante, Erkennung und Maßnahme. Dieser Beitrag ist die Landkarte dazu.

Das Repository: ABAP_Evildoers

github.com/log2-industrialist/ABAP_Evildoers

Das Repository sammelt die häufigsten Sicherheits-Anti-Patterns aus kundeneigenem ABAP-Code — jedes als minimales, erkennbares Beispiel samt sauberer Gegenvariante. Es ist die SAP-Entsprechung zu einer „Damn Vulnerable“-Sammlung, nur fokussiert auf ABAP.

Drei legitime Zwecke stehen dahinter:

  • Scanner kalibrieren. Prüfen, ob das eigene Werkzeug — ein RS_ABAP_SOURCE_SCAN-Musterset, ABAP-Test-Cockpit-Checks oder der Code Vulnerability Analyzer — auf genau die Muster anspringt, die es finden soll (und auf den sauberen Varianten schweigt). Das EICAR-Prinzip, übertragen auf ABAP.
  • Sicher programmieren lernen. Zu jedem Muster ein konkretes „so nicht / so besser“, statt einer abstrakten Richtlinie.
  • Get Clean / Stay Clean unterfüttern. Ein gemeinsames Vokabular der Muster, die ein Bereinigungsprojekt finden und ein Quality Gate blocken muss.

Der Aufbau ist immer gleich. Pro Muster ein Ordner unter patterns/ mit einer README (Muster, Risiko, Erkennung, Maßnahme) und zwei Programmen nach fester Namenskonvention: ZBC_EVILDOER_* ist das unsichere Vorher, ZBC_SECURE_* das bereinigte Nachher. Alles in klassischem ABAP (lauffähig ab NetWeaver 7.40) — bewusst ohne neumodische Konstrukte, damit es über die breite Release-Spanne portierbar und auch für Basis- und Security-Kollegen lesbar bleibt, die nicht täglich ABAP schreiben.

Zwei Muster bilden eine bewusste Ausnahme: Bei CALL SYSTEM und beim schreibenden REPOSRC-Zugriff zeigt das Repository nur Erkennung und Maßnahme — das erkennbare Token plus die saubere Lösung, ohne lauffähigen Angriff. Wir liefern Verteidigern Werkzeug, keine fertige Waffe.

Die acht Muster im Überblick

Ein Klick auf den Musternamen führt direkt in den passenden Ordner mit allen Erklärungen.

MusterWorum es gehtEinstufungVideo
IF SY-UNAMEBenutzervergleich statt BerechtigungsprüfungHochfolgt
IF SY-MANDTMandantenlogik als verstecktes LiteralMediumfolgt
BREAK-POINTVergessenes Debugging im ProduktivcodeMediumfolgt
Hartcodierte URLExterne Verbindung ohne zentrale GovernanceMediumfolgt
Hartcodierte PasswörterZugangsdaten im Klartext im QuellcodeHochfolgt
USR02-BCODEAuswertung veralteter, unsicherer Passwort-HashesHochfolgt
CALL SYSTEMBetriebssystembefehle aus ABAP (deprecated)Hochfolgt
REPOSRC (Schreibzugriff)Quellcode-Manipulation am Transportwesen vorbeiSehr hochfolgt

Wer die Muster gruppiert betrachten will: Zwei umgehen das Berechtigungskonzept (SY-UNAME, SY-MANDT), zwei betreffen Geheimnisse und Hashes (Passwörter, BCODE), drei sind gefährliche Aufrufe oder Verbindungen (CALL SYSTEM, REPOSRC, hartcodierte URL), und eines ist schlichte Hygiene (BREAK-POINT). In der Praxis sind es selten Einzelfälle — und genau die Häufung ist das eigentliche Risiko.

Schau zu: ein Video zu jedem Muster

Lesen ist das eine, sehen das andere. Zu jedem der acht Muster gibt es ein kurzes Video, das in wenigen Minuten zeigt, wie das Negativbeispiel im System aussieht, woran ein Scanner es erkennt und wie die saubere Variante funktioniert. Ideal für ein schnelles Reinschauen oder als Baustein einer internen Entwicklerschulung.

Zur Video-Reihe: (Links folgen — wir ergänzen sie hier und in der Tabelle, sobald die Reihe online ist.)

Geh in die Tiefe: das Seminar

Wer das Thema nicht nur überfliegen, sondern beherrschen will, dem bieten wir ein vollständiges Seminar an. Dort gehen wir über die einzelnen Muster hinaus: vom Aufsetzen eines Get-Clean-Projekts über den Bau eines belastbaren Stay-Clean-Gates im ABAP Test Cockpit bis zur Frage, wie man der Entscheiderebene den Fortschritt sichtbar macht. Mit eigenen Beispielen, am lebenden Objekt, nicht an Folien.

🎓 Zum Seminar: (Anmeldung über das Webinar-Portal — Link folgt.)

Damit schließt die Reihe

Drei Beiträge, ein Ziel: das unterschätzte Risiko im Eigencode sichtbar, greifbar und behebbar zu machen. Das Warum und das Wie stehen in den ersten beiden Teilen, das Was lebt ab jetzt im Repository — gepflegt, erweiterbar und für jeden nachvollziehbar, der wissen will, wie es im Maschinenraum wirklich aussieht.

Wer eigene Muster beisteuern oder einen Fehler melden möchte: Das Repository ist offen, Pull Requests und Issues sind willkommen.


Zurück zum Auftakt der Reihe · zum Get-Clean/Stay-Clean-Beitrag · zum Repository.

Schreibe einen Kommentar