Virtual Forge hat eine umfassende Qualitätsuntersuchung von ABAP Eigenentwicklungen bei SAP-Kunden durchgeführt. Hierbei wurde der gesamte selbst geschriebene Quellcode von mehr als 200 SAP-Installationen bei Unternehmen aus den verschiedensten Branchen und Ländern untersucht.
Andreas Wiegenstein von Virtual Forge stellte das Ergebnis der Untersuchung im Rahmen seines Vortrags am 30. April 2015 auf der iqnite-Konferenz in Düsseldorf vor.
Die Erhebung ist statistisch repräsentativ, somit lassen sich die Erkenntnisse generell auf alle Firmen projizieren, die SAP im Einsatz haben. Dadurch können Teilnehmer ableiten, welche Herausforderungen ihre Unternehmen im Bereich ABAP Qualität zu erwarten und zu meistern haben.
2. Andreas Wiegenstein
Der ABAP Qualitäts-Benchmark
Eine Analyse von über 200 SAP Installationen
iqnite Konferenz 28. - 30. April 2015
3. Agenda
1. SAP Standard und Eigenentwicklungen durch Kunden
2. Statistiken der Eigenentwicklungen
3. Best Practices
2
4. #SAP
#Research CTO @ Virtual Forge GmbH
SAP Security Researcher, aktiv seit 2003
Credits von SAP für > 75 gemeldete 0-Day Schwachstellen
Co-Autor “Sichere ABAP Programmierung” (SAP Press)
Co-Autor “ABAP Best Practices Leitfaden” (DSAG)
Autor “Top 20 Sicherheitsrisiken in ABAP Anwendungen” (BSI)
Sprecher auf internationalen Konferenzen
Troopers (Europa), BlackHat (Europa), Hack in the Box (Europa)
SAP TechEd (USA & Europa), IT Defense (Europa), RSA (USA)
Andreas Wiegenstein
5. SAP
Warum sind SAP Systeme wichtig?
Mehr als 248,500 Unternehmen haben SAP im Einsatz
SAP Kunden…
Transportieren > 1.1 Milliarden Flugpassagiere pro Jahr
Produzieren > 77,000 Autos am Tag
Produzieren > 52% aller Kinofilme
Produzieren > 65% aller Fernsehgeräte
Aber vor allem:
72% der weltweiten Bierproduktion hängt von Unternehmen ab, die SAP einsetzen !!!
4
Quelle:http://www.posters.at/the-simpsons--homer-bier_a34273.html
6. SAP Eigenentwicklungen - Ausgangssituation
(Alle) Kunden passen den SAP Standard an
Interne Entwicklungsteams
Externe Entwickler
Die Entwicklungsrichtlinien der meisten Kunden konzentrieren sich auf
Namenskonventionen
Der SAP Standard liefert
Rudimentäre Tools zur statischen und dynamischen Codeanalyse
Keine Metriken bzgl Volumen (Lines of Code)
5
7. SAP Besonderheiten in der Programmierung
SAP Systeme laufen unabhängig von Betriebssystem und Datenbank
SAP hat einen proprietäre Client: SAP GUI
Bei Zugriffen auf Geschäftsdaten sind besondere Regeln zu beachten
Berechtigungsprüfungen
Spezielle Protokollierung von Änderungen
Daten verschiedener Organisationen (Mandanten) sind (getrennt) in derselben Datenbank
gespeichert
Spezieller ABAP Befehl, um Berechtigungsprüfungen durchzuführen: AUTHORITY-CHECK
Proprietäre SQL Schicht zwischen ABAP und der Datenbank: Open SQL
Proprietäre System-zu-System Kommunikation: RFC (Remote Function Call)
6
8. Was ist das größte Risiko bei einem SAP System?
Systemstillstand
7
9. #Statistik
"Es gibt 3 Arten von Lügen: Lügen, verdammte Lügen und Statistiken."
(Benjamin Disraeli)
“Traue keiner Statistik, die Du nicht selbst gefälscht hast.”
(Unbekannt)
10. Business Code Quality Benchmark
Andauerndes Projekt zur Analyse des gesamten ABAP Codings je eines ausgewählten SAP Systems
Ergebnisse bisher von 217 Unternehmen
Mit verschiedensten Qualitätssicherungsprozessen / -Reifegraden
Verschiedener (Konzern)Größen
Mit verschieden-langer SAP Historie
Aus verschiedensten Branchen und Ländern
Basierend auf statischer Codeanalyse
Performance, Rosbustheit, Sicherheit, Compliance
Nur “kritische” Fehler werden in der Statistik berücksichtigt
Datenerhebung stammt aus den Jahren 2013 und 2014
9
11. Statistiken - Allgemein
Durchschnittlich haben Unternehmen 2,08 Millionen Zeilen eigenen Code pro SAP System
Kunden nutzen nicht den “reinen” SAP Standard
Die häufigste Modularisierungseinheit sind FORMs (Prozeduren) mit 64%, gefolgt von Methoden (19%)
Die meiste selbst geschriebene Funktionalität ist also schlecht wiederverwendbar
Es gibt durchschnittlich 14.500 zusätzliche Dateneingabe-Quellen durch Kundencode
Jede Datenquelle erhöht die Angriffsoberfläche einer Software
78% aller Benutzereingaben kommen aus SAP GUI Anwendungen
18% aller Benutzereingaben kommen aus RFC (Remote Function Call) Verbindungen
Innentäter haben daher die höchsten Chancen Sicherheitsdefekte zu finden
10
12. Statistiken – Allgemein (2)
Es gibt mehr Qualitätsprobleme bei Datenbankzugriffen als Datenbankzugriffe
Es gibt im Schnitt 24.635 Open SQL Abfragen im Kundencode
( 21.227 Lesezugriffe und 3.408 Schreibzugriffe )
Es gibt im Schnitt 26.147 Qualitätsfehler bei Open SQL Abfragen
( verteilt auf alle Testbereiche )
Nur 0,3% aller SAP Module sind per HTTP / Internet erreichbar
Optimierungen sollten sich zunächst auf “klassische” ABAP Entwicklung konzentrieren
Sicherheitslösungen wie Web Application Firewalls haben einen vergleichsweise geringen Wert
11
13. Statistiken – Sicherheit und Compliance
Es existiert 1 kritischer Sicherheits-/Compliance-Fehler pro 1.000 Zeilen Code
Das typische SAP System hat damit 2.151 Sicherheits-/Compliance-Fehler alleine im Kundencode.
Liste der 5 häufigsten Sicherheits- und Compliance-Fehler:
* Wahrscheinlichkeit gibt an in wie vielen der untersuchten Systeme mindestens 1 Fehler dieser Art auftrat.
** Anzahl gibt wieder wie viele kritische Fehler dieser Art pro System im Schnitt auftreten.
12
Art der Schwachstelle Wahrscheinlichkeit * Anzahl **
Berechtigungsfehler 100 % 1.056
Directory Traversal 91 % 308
Direkte Modifikation von SAP Tabellen 86 % 39
Mandantenübergreifende Zugriffe 83 % 122
Open SQL Injection 70 % 15
14. Statistiken – Sicherheit und Compliance (2)
Pro System sind 10 Sicherheitslücken so schwerwiegend, das sie einem Angreifer ermöglichen die
totale Kontrolle über den SAP Server zu erlangen
Pro System gibt es 184 proprietäre Berechtigungsprüfungen
„Rote Ampel“ bei Wirtschaftsprüfungen
Pro System gibt es 476 RFC-fähige Funktionsbausteine. Bei 64% davon fehlt jegliche
Berechtigungsprüfung im Code.
13
16. Statistiken – Performance
Es existieren 1,2 kritische Performance-Fehler pro 1.000 Zeilen Code
Unternehmen nutzen nur einen Bruchteil ihrer Hardwareleistung
Liste der 5 häufigsten Performance-Fehler:
* Effekt gibt an, wo sich die Performancefehler auswirken - Anwendungsserver (AS) oder Datenbank (DB).
** Wahrscheinlichkeit gibt an in wie vielen der untersuchten Systeme mindestens 1 Fehler dieser Art auftrat.
*** Anzahl gibt wieder wie viele kritische Fehler dieser Art pro System im Schnitt auftreten.
15
Art der Schwachstelle Effekt * Wahrscheinlichkeit ** Anzahl ***
Ineffiziente Operationen AS 99 % 825
Verschachtelte Schleifen AS 99 % 464
DB Index ineffizient verwendet DB 98 % 1.328
WAIT Kommandos (5+ Sekunden) AS 91 % 42
Umgehung der DB Pufferung DB 90 % 763
high score: WAIT UP TO 6000 SECONDS.
17. Statistiken – Performance (2)
16
Analyse von 26 Transaktionen, die in Projekten optimiert wurden
84% der verbrauchten Laufzeit war unnötig
18. Statistiken – Robustheit
Es existieren 3,2 kritische Robustheits-Fehler pro 1.000 Zeilen Code
Unerwartetes Systemverhalten führt zu Abstürzen und ungewünschten Ergebnissen
Mehr als 76% der SAP Systeme verwenden Datenbank-abhängigen Code
Datenbankmigrationen erfordern Änderungen im Code
Liste der 3 häufigsten Robustheits-Fehler:
* Wahrscheinlichkeit gibt an in wie vielen der untersuchten Systeme mindestens 1 Fehler dieser Art auftrat.
** Anzahl gibt wieder wie viele kritische Fehler dieser Art pro System im Schnitt auftreten.
17
Art der Schwachstelle Wahrscheinlichkeit ** Anzahl ***
Fehlende / Falsche Ausnahmebehandlung 97 % 5.478
Hard-codierte Abhängigkeiten 95 % 251
Instabile Operationen 80 % 341
19. #Best Practices
"Der Begriff best practice, auch Erfolgsmethode genannt, stammt aus der
angloamerikanischen Betriebswirtschaftslehre und bezeichnet bewährte,
optimale bzw. vorbildliche Methoden, Praktiken oder Vorgehensweisen im
Unternehmen. Der Begriff wird heute auch allgemeiner für die Erfolgsmethode
bzw. bestmögliche Methode verwendet, etwa in politischen Zusammenhängen."
de.wikipedia.org
20. Best Practices
Machen Sie einen Awareness Workshop für Ihr Management
Ohne einen verpflichtenden Prozess mit Rückendeckung des Managements ändert sich nichts
Setzen Sie sich erreichbare Ziele
Kein Entwickler lernt 300 optimierte Programmierpraktiken über Nacht
Entwerfen Sie einen Plan, wie Sie mit Altlasten umgehen
Korrekturen brauchen Zeit
Alle Fehler zu beheben ist nicht wirtschaftlich
19
21. Best Practices (2)
Verwenden Sie sinnvolle Entwicklungsrichtlinien
Für alle Qualitätsbereiche
Für interne und externe Entwicklungen
Achtung: Applikationssicherheit ist für viele Entwickler schwer zu verstehen
Für ein gutes Sicherheitsverständnis sind regelmäßige Schulungen erforderlich
Verwenden Sie Tools um die Einhaltung der Entwicklungsrichtlinien zu überprüfen
Nur überprüfbare Richtlinien lassen sich umsetzen
Nur Tools liefern Transparenz, wo Ihr Unternehmen in Punkto SAP Code-Qualität steht
Messen Sie den Erfolg Ihrer Maßnahmen
Erfolg sichert die langfristige Akzeptanz des neuen Prozesses
20
24. Fazit
23
Wenn Ihr Unternehmen SAP einsetzt, hat es (statistisch betrachtet) signifikante Qualitätsmängel in den
Eigenentwicklungen.
Diese Qualitätsmängel haben deutliche Auswirkungen auf
Die Sicherheit Ihres Unternehmens
Die Stabilität / Verfügbarkeit Ihrer Systeme
Die Effizienz Ihrer Hardware
25. Nächste Woche
Nehmen Sie an unserer Studie Business Code Quality Benchmark teil
Sie erhalten einen umfassenden Bericht über eins Ihrer SAP Systeme
Nächster Monat
Diskutieren Sie die Ergebnisse mit Ihrem Management
Optimieren Sie Ihren SAP Entwicklungsprozess
Nächstes Jahr
Betreiben Sie Ihre SAP Anwendungen sicherer, performanter und robuster
Nächste Schritte
24
26. Vielen Dank für Ihre Aufmerksamkeit
Fragen ?Jetzt oder
später
@codeprofiler
#ThingsWeFoundWhenPentestingSAP
andreas.wiegenstein@virtualforge.de