Benchmarking ABAP-Code-Qualität Sicherheitslücken und Schwachstellen in Eigenentwicklungen Frederik Weidemann Head of Consulting Virtual Forge GmbH Axel Allerkamp Leiter Security Analyse und Test Axel Springer AG Axel Springer AG 2 Virtual Forge Virtual Forge: Experten für SAP®-Anwendungssicherheit Gründung in 2001 Eigentümergeführt Standorte in Heidelberg, Weimar und Philadelphia (USA) 3 Warum reden wir zusammen? Erstmaliges Benchmarking von ABAP Kunden-Code Prüfung im Sinne der Wirtschaftsprüfer nicht ausreichend! Ermöglicht Risikobewertung für neue Geschäftsfelder als Annahme, bis sie überprüft werden Abschätzung: Mit welchem Aufwand muss gerechnet werden? Vergleichbarkeit: Wo stehe ich im Vergleich zu anderen? 4 Geschäftsrisiken durch Sicherheitslücken Industriespionage Datenmanipulation Datendiebstahl Imageverlust Systemausfälle 5 Risiken im ABAPTM-Code In ~1.000 Zeilen ABAP-Code ist eine kritische Sicherheitslücke! 6 Agenda Vergleichende Daten & Fakten aus einer Vielzahl durchgeführter CodeReview-Projekte Überprüfte Systeme / Kunden Benchmark Gewonnene Erkenntnisse 7 Agenda Vergleichende Daten & Fakten aus einer Vielzahl durchgeführter CodeReview-Projekte Überprüfte Systeme / Kunden Benchmark Gewonnene Erkenntnisse 8 Fakten September 2012 Kunden 61 Systeme 75 Zeitraum der Datenakquise ABAP-Code-Zeilen (Lines of Code) Q4/11 – Q3/12 125 603 168 Anonymisierte Daten Alle Findings wurden im Kunden-Code gefunden Y*,Z* oder 3rd-Party-Namespaces Zur Zeit kein SAP-Code Testfälle Betrachtung der APP/11-Liste von BIZEC Sicherheit, Compliance, Performance, Wartbarkeit, Robustheit 9 Definitionen Arithmetisches Mittel (Average): 𝐴𝑀 = 1 𝑛 𝑛 𝑖=1 𝑥𝑖 Median: „Der Wert, welcher an der mittleren Stelle steht, wenn man die Werte nach Größe sortiert.” Beispiel: 1,2,3,100,101 Median = 3 LOC = Lines of Code (ohne Kommentare und Leerzeilen) KLOC = Kilo LOC MLOC = Millionen LOC 10 Metriken Das „Durchschnittsprojekt“ Metrik Average Median 1 674 709 1 128 097 Kommentare 535 863 319 223 Inline Kommentare 112 654 60 461 Prozentualer Anteil der Kommentare in den LOC ~27% ~27% Pragmas 4 650 1 377 52,9 52 Lines of Code (LOC) (ohne Kommentare und Leerzeilen) Average Module Size (LOC) 11 Das „Durchschnittsprojekt“ Metrik Average Median 1 674 709 997 907 1 Fehler pro LOC (Average) Average # Fehler Median # Fehler 1153 1451 852 7705 217 116 1186 1375 803 1668 1003 218 129 13022 6424 Source Code Lines (LOC) (ohne Kommentare und Leerzeilen) Bereich Sicherheit (Critical Findings) Compliance (Critical Findings) Performance (Critical Findings) Robustheit (Critical Findings) Wartbarkeit (Total Findings) 12 Das „Durchschnittsprojekt“ Metrik Median Pakete 156 53 Klassen 377 106 Funktionsgruppen 617 382 Programme 1729 1142 Includes 1389 840 12 0 148 0 22 0 131 0 BSP Anwendungen BSP Seiten Web Dynpros WD Komponenten 13 Average Das „Durchschnittsprojekt“ Security-Metriken Metrik Median Authority Checks 523 165 Function Modules (RFC) 311 147 RFC Calls to Server 167 73 12358 7889 206 0 10128 6171 Sources - Untrusted (RFC) 1674 746 Sources - Untrusted (FTP) 3 0 346 106 Sources (Total) Sources - Untrusted (HTTP) Sources - Untrusted (SAPGUI) Sources - Untrusted (Indirect via File or OS) 15 Average Agenda Vergleichende Daten & Fakten aus einer Vielzahl durchgeführter CodeReview-Projekte Überprüfte Systeme / Kunden Benchmark Gewonnene Erkenntnisse 16 BIZEC APP/11 - 2010 ID Schwachstelle Beschreibung APP-01 ABAP Command Injection Ausführung von beliebigem ABAP-Code APP-02 OS Command Injection Ausführung beliebiger Betriebssystem-Kommandos Improper Authorization 17 APP-03 (Missing, Broken, Proprietary, Generic) Fehlende oder fehlerhafte Berechtigungsprüfung APP-04 Generic Module Execution Unerlaubte Ausführung von Modulen (Reports, FuBas, etc.) APP-05 Cross-Client Database Access Mandantenübergreifender Zugriff auf Geschäftsdaten APP-06 SQL Injection Schadhafte Manipulation von Datenbankbefehlen APP-07 Unmanaged SQL Verwendung nativer Datenbankbefehle APP-08 Cross-Site Scripting Manipulation des Browser UI, Diebstahl von Berechtigungen APP-09 Cross-Site Request Forgery Ausführung von Business-Logik im Namen eines anderen Benutzers APP-10 File Upload (Malware) Speicherung schadhafter Dateien auf dem SAP-Server APP-11 Directory Traversal Unerlaubter Schreib-/Lesezugriff auf Dateien (SAP-Server) ABAP Schwachstellen – Beispiel Berechtigungsfehler in SE30 führt zu ABAP Command Injection Patch verfügbar seit Februar 2012 Fehler wird mit SAP Note 1661349 behoben 18 Das „Durchschnittsprojekt“ (1.67 MLOC) Security Testfall Missing before CALL TRANSACTION Top 20AUTHORITY-CHECK Security Test Cases Missing AUTHORITY-CHECK in Reports Directory Traversal (Write Access) Hard-coded SAP System ID Checks (sy-sysid) Missing AUTHORITY-CHECK in RFC-Enabled Functions Dangerous ABAP Commands Directory Traversal (Read Access) File Upload (SAP GUI) Hard-coded SAP Client Checks (sy-mandt) File Download (SAP GUI) Cross-Site Scripting Generic RFC Destinations OSQL Injection (Read Access) Broken AUTHORITY-CHECKs Generic Table Query (Write Access) Generic ABAP Module Calls Exposed Kernel Calls Alias Authorization in AUTHORITY-CHECK ABAP Command Injection (report) ABAP Command Injection (program) 20 AVERAGE 547 266 151 121 104 59 56 34 22 18 15 13 13 7 6 6 4 3 2 2 MEDIAN 300 126 19 40 35 0 10 9 1 5 0 5 2 1 1 0 0 0 0 0 Top 20 Security im „Durchschnittsprojekt“ 600 500 400 300 200 100 0 MED AVG AVG MED Das unterschätzte Risiko: ABAP Quellcode Sicherheit Anzahl der Schwachstellen ist nicht vernachlässigbar 21 Top 5 Compliance im „Durchschnittsprojekt“ 160 140 120 100 80 60 40 20 0 MED AVG AVG MED Falsche oder fehlende Berechtigungsprüfungen werden über Bordmittel (Ta. SUIM, ST01, …) nicht erkannt 22 Top 5 Robustheit im „Durchschnittsprojekt“ 1400 1200 1000 800 600 400 200 0 AVG MED Unchecked Exception after Ignored Exceptions CALL FUNCTION (Non-Class-based) Insufficient Error Handling (TRY/CATCH) AVG Hard-coded RFC Destinations Parameter Mismatch in CALL FUNCTION Unerwartet hohe Anzahl von Fehlern: Funktionale Probleme! Applikation im undefinierten Zustand? 24 MED Agenda Vergleichende Daten & Fakten aus einer Vielzahl durchgeführter CodeReview-Projekte Überprüfte Systeme / Kunden Benchmark Gewonnene Erkenntnisse 25 Gewonnene Erkenntnisse Wer interessiert sich schon für ABAP-Code … 26 Gewonnene Erkenntnisse SAP GUI und RFC Erkenntnisse aus unseren SAP Basis Audits Der durchschnittliche SAP Key User hat S_RFC = “*“ Angriffsmöglichkeiten (aus dem “Durchschnittsprojekt”) 311 Remote fähige Funktionen (RFC) Häufig sind RFC-fähige Funktionen generisch programmiert und werden über einen technischen Benutzer aufgerufen. Beispiel: BW-System AUTHORITY-CHECK 27 OBJECT lv_auth FOR USER iv_input Gewonnene Erkenntnisse In jedem System gibt es mit einer Wahrscheinlichkeit größer 50% mindestens eine “ABAP Command Injection (Report oder Programm)” 100% der Projekte haben Berechtigungsprobleme durch fehlende Berechtigungen 96% haben fehlende Berechtigungen bei CALL TRANSACTION In 88% der Projekte haben wir mindestens ein Problem mit Directory Traversal (Read or Write) gefunden In ~1.000 Zeilen ABAP-Code ist eine kritische Sicherheitslücke! 28 Axel Springer AG Wie die Axel Springer AG die Ergebnisse benutzt Bewertung der SAP Systeme Etablieren von Verfahren und Methoden zur sicheren ABAP Code Entwicklung Risikoabschätzung, wenn noch nicht unternommen wurde Einstufung in höhere Risikoklasse Budgetplanung Aus- und Weiterbildung von Softwareentwicklern Aufwände für Fixen 29 Complimentary Scan Take the Test! unter www.virtualforge.com Sicherheit & Compliance Ihr ABAP™Code Performance Robustheit & Wartbarkeit Data Loss Prevention • SchwachstellenBericht • Risiko-Priorisierung • Beispiele von konkreten Schwachstellen • Div. Code-Metriken • Benchmark (auf Wunsch) Complimentary Scan Virtual Forge CodeProfiler Sprechen Sie uns an! Sie finden Virtual Forge in Halle 5 am Stand D1! 31 Kontakt Frederik Weidemann [email protected] Head of Consulting Virtual Forge GmbH Speyerer Str. 6 69115 Heidelberg Tel. +49 6221 / 868 90 - 160 Axel Allerkamp [email protected] Leiter Security Analyse und Test Weitere Informationen: Axel Springer AG Axel-Springer-Straße 65 10888 Berlin Tel. +49 30 / 2591 – 77 77 6 32 • • Artikel „Sicherheitslücken und Hintertüren im ABAP-Code“ (Link) Artikel „Mit Schwachstellen umgehen und sie unter Kontrolle halten“ (Link) Disclaimer © 2012 Virtual Forge GmbH. All rights reserved. SAP, ABAP und weitere im Text erwähnte SAP-Produkte und –Dienstleistungen sowie die entsprechenden Logos sind Marken oder eingetragene Marken der SAP AG in Deutschland und anderen Ländern weltweit. Alle anderen Namen von Produkten und Dienstleistungen sind Marken der jeweiligen Firmen. Die Angaben im Text sind unverbindlich und dienen lediglich zu Informationszwecken In dieser Publikation enthaltene Informationen können ohne vorherige Ankündigung geändert werden. Die vorliegenden Angaben werden von Virtual Forge bereitgestellt und dienen ausschließlich Informationszwecken. Virtual Forge über nimmt keinerlei Haftung oder Garantie für Fehler oder Unvollständigkeiten in dieser Publikation. Aus den in dieser Publikation enthaltenen Informationen ergibt sich keine weiterführende Haftung. Es gelten die Allgemeinen Geschäftsbedingungen von Virtual Forge – einsehbar auf www.virtualforge.com. 33