WITH HEADER LINE – nicht nur obsolet, sondern auch gefährlich.

SAST BLOG: WITH HEADER LINESchon seit vielen SAP-Versionen ist der Zusatz „WITH HEADER LINE“ eigentlich überflüssig. Denn diese Anweisung deklariert nicht nur interne Tabellen, sondern auch ein weiteres Datenobjekt: die Kopfzeile.

Viele Hinweistexte sensibilisieren daher dafür, dass die Benutzung dieser Anweisung zu verschiedenen inhaltlichen Problemen führt. Unter anderem ist aufgrund der Namensgleichheit nicht direkt ersichtlich, ob man gerade auf einer Tabelle oder einer Kopfzeile arbeitet.

Wovor in den Hinweisen in der Regel jedoch nicht gewarnt wird ist, dass diese Art der Programmierung auch Sicherheitsprobleme für Ihre SAP-Systeme mit sich bringt.

Trotz allem ist die Kopfzeile aus vielen Programmcodes noch immer nicht verschwunden. Als Argumentation wird angeführt, dass es nur mit der Kopfzeile möglich sei, die verkürzte Schreibweise zu benutzen. Diese sorgt dafür, dass die hinzuzufügende Struktur nicht mehr explizit angegeben werden muss.

Ein Beispiel:
SAST-Blog_Headerline_Abb01_1804_de

So entsteht die Sicherheitsgefahr für Ihr SAP

Auch SAP-Systeme sind seit längerem unicodefähig, es können demnach auch andere Schriften als die lateinische eingesetzt werden. Alle Schriften werden gleichberechtigt benutzt und sind parallel einsetzbar. Ein User kann somit nicht erkennen, ob der Buchstabe im SAP ein lateinischer oder ein kyrillischer ist.

Des Weiteren besitzen alle SAP-Versionen schon seit Jahren die Tabelle „TRMAC“. Diese ist dazu gedacht SAP globale Makros bereit zu halten, um Coding zu verkürzen.

Verbindet man nun diese drei Möglichkeiten: verkürzte Schreibweise + Unicodefähigkeit + Tabelle „TRMAC“ erhält man die Möglichkeit, Coding effektiv zu verstecken!

Dazu wird ein Coding in der TRMAC angelegt, das dem der verkürzten Schreibweise ähnelt. Doch wird der erste Buchstabe gegen sein kyrillisches Äquivalent ausgetauscht. Selbst erfahrenden Entwicklern fällt dieser Tausch im Coding, oder bei der Durchsicht der TRMAC-Tabelle mit der Transaktion „SM30“, in der Regel nicht sofort auf.

TRMAC-Tabelle
SAST-Blog_Headerline_Abb02_1804_de

Code
SAST-Blog_Headerline_Abb03_1804_de

Das Programm führt das Makro trotzdem aus und wird ohne sichtbaren Fehler weiterlaufen:
SAST-Blog_Headerline_Abb04_1804_de

Der einzige sichtbare Unterschied liegt im Editor, wo Schlüsselwörter farblich markiert dargestellt werden, Makros hingegen nicht. Aber ein nicht farblich markiertes Schlüsselwort stellt für die meisten Entwickler häufig keine Änderung dar und fällt somit durch das Raster.

Und selbst wenn mit „APPEND“ nach entsprechendem Code gesucht wird, wird man lediglich dann fündig, wenn das Makro aus der TRMAC-Tabelle kopiert und anschließend in die Suchmaske eingegeben wird. Die bekannteste und bis heute benutzte, interne Tabelle mit Kopfzeile ist die Tabelle SCREEN, in der einzelne Dynprofelder vor der Anzeige bearbeitet werden können. Das obige Beispiel funktioniert auch mit dieser.

So schützen Sie Ihr SAP vor verstecktem ABAP-Coding

Nutzen Sie ausschließlich die korrekten Schreibweisen und verzichten Sie auf die verkürzten Versionen. Denn dann muss die Struktur explizit angegeben werden und es werden weitere Worte in die Anweisung geschrieben.

Sorgen Sie dafür, dass weitere Variablen definiert werden müssen. Eine Variable mit den Namen „FROM“, „INTO“ und „TO“ fällt Ihren Entwicklern im Programmcode viel eher auf!
Vor allem dann, wenn die erweiterte Syntaxprüfung benutzt wird:
SAST-Blog_Headerline_Abb05_1804_de

Die Benutzung der SCREEN-Tabelle mit der verkürzten Schreibweise ist seit einigen SAP Releases obsolet . Verwenden Sie daher stattdessen folgende Syntax:
SAST-Blog_Headerline_Abb06_1804

MarkusRest
Markus Rest
SAP ABAP Development

Sie freuen sich über weitere Tipps und Handlungsempfehlungen aus dem Umfeld SAP Security & Compliance? Dann nutzen Sie die Chance zum Austausch mit uns, z.B. auf unseren Veranstaltungen oder in einem unserer Webinare.