Andreas Wiegenstein TITEL bearbeiten Dr. Markus Schumacher (3) … (2) … (1) … (SAP_ALL) DSAG Professional Services - 29.11.2012 Webinar Click toAKedit Master text styles Second level Third level Fourth level Fifth level © © 2012 2011 Virtual 2012 Virtual Forge Forge GmbH GmbH || www.virtualforge.com www.virtualforge.com || All All rights rights reserved. reserved. TITELAuto, Mein bearbeiten mein Haus, mein Boot, … Andreas Wiegenstein Click to edit Master text styles Gründer von Virtual Forge (Heidelberg), verantwortlich für R&D SAP Security Researcher, aktiv seit 2003 Third levelfür mehr als 20 gemeldete 0-day Schwachstellen Credit von SAP Fourth levelauf internationalen Konferenzen Regelmäßiger Referent Fifth(USA level& Europa) / 2005 (USA) / 2006 (USA), DSAG SAP TechEd 2004 Second level 2009 BlackHat 2011 (Europa), Hack in the Box 2011 (Europa) Troopers 2011 & 2012 (Europa), RSA 2012 (USA) Co-Autor „Sichere ABAP Programmierung" (SAP Press) Training Class WDESA3 @ SAP University © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. INHALT TITEL bearbeiten (3) SAPto Audits und Eigenentwicklungen Click edit Master text styles Second level (2) Sicherheitsrisiken in ABAP Third level Fourth level (1) Prüfung von Eigenentwicklungen Fifth level (SAP_ALL) Demos © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL bearbeiten (3) SAP Audits und Eigenentwicklungen Click to edit Master text styles Second level Third level Fourth level Fifth level © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL SAP Audits bearbeiten Prüfungsaktivitäten beziehen sich auf den SAP Standard Click to edit Master text styles Schutz von Transaktionen Second level Schutz von Tabellen Third level SoD Fourth level Prüfungen basieren auf SAP Standard Fifth level Kritische Transaktionen sind bekannt Kritische Tabellen sind bekannt © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITELStandard SAP bearbeiten - Schutz nach Standard Transaktionaler Schutz : Anlegen von ABAP Programmen Click to edit Master text styles Second level S_TCODE ? Third level Fourth level ABAP Workbench (SE80) Fifth level S_DEVELOP ? Produktivsystem ? INSERT REPORT Erzeugt ABAP Programme © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL SAP Audits bearbeiten Segeln in vertrauten Gewässern Click to edit Master text styles Second level Third level Fourth level Fifth level © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL bearbeiten Eigenentwicklungen Aber was, wenn die Regeln nicht mehr gelten? Click to edit Master text styles Second level Third level Fourth level Fifth level © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL bearbeiten Eigenentwicklungen in Zahlen Unternehmen haben ~ 1.65text Mio styles LOC Custom ABAP (netto) * Click to edit Master Second level Dies entspricht etwa 1% des SAP Standards (ECC 6.0) Third level Fourth level Das wären 8 Bermuda Dreiecke auf der Erde, was der doppelten Fifth level Fläche des Mittelmeeres entspräche. * Virtual Forge Studie mit 45 Firmen und 100 Mio LOC (netto) Netto = Code ohne Kommentare und Leerzeilen © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL bearbeiten ABAP Code im IKS Kontext IKS-Struktur im ERP-Umfeld Click to edit Master text styles Generellen Kontrollen (ITGC - IT General Controls) SecondITlevel Third level (Change Management) Änderungswesen Fourth level ABAPCode Fifth level Risiken für Geschäftsprozesse Vollständigkeit Richtigkeit Funktionstrennung Rechte Nachvollziehbarkeit Datenschutz © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. … TITEL SAP Audits bearbeiten Ein Unternehmen immer fürstyles eigenen Code* Click to edithaftet Master text Second level Relevanz Third level Hausinterne Entwicklung Fourth level Outsourcing Fifth level Firmenzukäufe * (Chuprunov, SAP Revision, SAP Press, 2012) © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL bearbeiten Eigenentwicklungen Eigenentwicklungen können sämtliche Regeln außer Kraft setzen Click to edit Master text styles Second level ThirdRisiko level Transaktion ZTRANS1 Fourth level Erzeugt ABAP Programme INSERT REPORT Fifth level Risiko Transaktion ZTRANS2 Risiko REPORT ZREP Risiko Web Dynpro Anwendung ZWD © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. Risiko Funktionsbaustein ZFB1 Risiko Funktionsbaustein ZFB2 Risiko Business Server Page ZBSP TITEL bearbeiten (2) Sicherheitsrisiken in ABAP Click to edit Master text styles Second level Third level Fourth level Fifth level Grafikquelle: http://de.wikipedia.org/wiki/Europa © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL bearbeiten Kritische ABAP Befehle Befehl Click to INSERT REPORT Wirkung edit MasterErstellung text styles von ABAP Code Second level Third level - Keine S_DEVELOP Prüfung Keine Prüfung auf Produktivsystem Ermöglicht direkte Modifikation des Standards CALL 'SYSTEM' Ausführung beliebiger Betriebssystem-Kommandos Fourth level CALL 'ThWpInfo' - Bypass von SM49/SM69 - Keine S_LOG_COM Prüfung Fifth level CALL 'C_DB_EXECUTE' CALL 'C_DB_FUNCTION' Ausführung beliebiger nativer SQL Kommandos - Bypass von S_TABU_* Prüfungen - Bypass von Änderungsbelegen - Umgehen der Mandantentrennung - Umgehen der OSQL Einschränkungen CLIENT SPECIFIED Option Umgehen der Mandantentrennung INSERT UPDATE MODIFY DELETE Direkte Modifikation auf der Datenbank - Bypass von S_TABU_* Prüfungen - Bypass von Änderungsbelegen dbtab dbtab dbtab dbtab © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL bearbeiten im ABAP Sicherheitsrisiken Was kannto schief Click editgehen? Master text styles 1. Berechtigungsfehler Second level 2. Injection Schwachstellen Third level 3. Hintertüren und Standard-Bypasses Fourth level 4. Datenlecks Fifth level © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL #1 Berechtigungsfehler bearbeiten IF sy-uname <> for_user. AUTHORITY-CHECK Click to edit Master text styles OBJECT 'S_DEVELOP' ID 'DEVCLASS' DUMMY Second level ID 'OBJTYPE' ID Third level 'OBJNAME' FIELD for_user ID 'P_GROUP' DUMMY ID 'ACTVT' FIELD '90'. Fourth level ELSE. FIELD 'DEBUG' Fifth level AUTHORITY-CHECK OBJECT 'S_DEVELOP' ID 'DEVCLASS' DUMMY ID 'OBJTYPE' FIELD 'DEBUG' ID 'OBJNAME' DUMMY ID 'P_GROUP' DUMMY ID 'ACTVT' FIELD '03'. IF sy-subrc <> 0. cx_wd_general=>raise( text-001 ). ENDIF. ENDIF. © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL #1 Berechtigungsfehler bearbeiten - Statistik Es gibt imto Schnitt 1 kritischen alle 1.400 LOC* Click edit Master textBerechtigungsfehler styles Second level Third level * Virtual Forge Studielevel mit 45 Firmen und 100 Mio LOC (netto) Fourth Netto = Code ohne Kommentare Fifth levelund Leerzeilen © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL #2 Injections bearbeiten DATA promotion TYPE string. DATAClick to TYPE editstring. Master text styles filename DATA mytext TYPE string. Second level promotion = request->get_form_field('promo'). Third level Fourth level CONCATENATE '/sap/tmp/data/' promotion INTO filename. OPEN DATASET filename FOR FifthINPUT levelIN TEXT MODE ENCODING DEFAULT. mytext = ''. WHILE sy-subrc = 0. IF mytext IS NOT INITIAL AND mytext NE ''. page->write( mytext ). ENDIF. READ DATASET filename INTO mytext. ENDWHILE. © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL #2 Injections bearbeiten „Normale“ Eingabe durch Benutzer Click to edit Master text styles promo=flightapp/promotion/summer.txt Second level Resultierender Dateizugriff Third level /sap/tmp/data/flightapp/promotion/summer.txt Fourth level Fifth level Unerwartete Eingabe durch Benutzer ( Injection durch Zeichenfolge ../ ) promo=../../../etc/passwd Resultierender Dateizugriff /sap/tmp/data/../../../etc/passwd /sap/tmp/../../etc/passwd /sap/../etc/passwd /etc/passwd © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. DEMO TITEL #2 Injections bearbeiten - Statistik Es gibt imto Schnitt 1 kritische Injection Click edit Master text stylesSchwachstelle alle 5.800 LOC* Second level Third level * Virtual Forge Studielevel mit 45 Firmen und 100 Mio LOC (netto) Fourth Netto = Code ohne Kommentare Fifth levelund Leerzeilen © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL #3A Hintertüren bearbeitenbeim Kunden „Die drei Entwickler“ Click to edit Master text styles Produktive BSP Anwendung mit versteckter Seite Second level Für „normale“ Benutzer leer Third level Für drei Entwickler Hintertür, um beliebige Tabellen auszulesen Fourth level Fifth level DEMO © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL #3B Hintertüren bearbeitenim Standard Click to edit Master text styles Second level Third level Fourth level Fifth level Direkte Eingabe von “OK Codes” in TA RSRV 1. Normaler Programmfluss: "display" 2. Versteckter Programmfluss: "editor_call“ Keine „echte“ Hintertür, aber ein schönes „Osterei“ © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL #4 Datenlecks bearbeiten Fehlerhafter Funktionsbaustein Click toRFC-fähiger edit Master text styles Input: PERID level ppp und PERNR nnn Second Output Fehlerfall: „Die angegebene PERID und PERNR passen im Third level nicht zusammen. PERNR nnn ist PERID xxx zugeordnet.“ FourthDer level Fifth level STORY © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL bearbeiten (1) Prüfung von Eigenentwicklungen Click to edit Master text styles Second level Third level Fourth level Fifth level © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL bearbeiten BIZEC APP/11 Prüfempfehlungen ID Schwachstelle Click toCommand edit Master APP-01 ABAP Injection Beschreibung textAusführung stylesbeliebigen ABAP Codes APP-02 OS Command Injection Second level APP-03 Improper ThirdAuthorization level APP-04 Generic Module Execution 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) (Missing, Broken, Proprietary, Generic) Fourth level Fifth level Ausführung beliebiger Betriebssystem-Kommandos Fehlende oder fehlerhafte Berechtigungsprüfung Unerlaubte Ausführung von Modulen (Reports, FuBas, etc) © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL bearbeiten Weitere Informationen BIZEC – Business Security Initiative Organisationen http://www.bizec.org Click to edit Master text styles Second level Literatur Third level Fourth level Sichere ABAP-Programmierung (SAP PRESS, 372 S., 2009) Andreas Wiegenstein, Markus Schumacher, Sebastian Schinzel, Frederik Weidemann Fifth level Handbuch SAP-Revision (SAP PRESS, 700 S., 2012) Maxim Chuprunov © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL bearbeiten (SAP_ALL) Demos Click to edit Master text styles Second level Third level Fourth level Fifth level © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL bearbeiten ABAP Command Injection Funktionale des Befehls INSERT REPORT Click to Analyse edit Master text styles 1. Auswirkungen Second levelauf die Authorization Trace 2. Auswirkungen Third levelauf einem Produktivsystem 3. Modifikation des level SAP Standards Fourth Fifth level DEMO © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL bearbeiten Quiz Click to edit Master text styles Second level Was ist der kürzeste Weg Third level Fourth level mittels ABAP Code Fifth level SAP_ALL Berechtigung zu erhalten? © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL bearbeiten Lösung 56Click to edit Master text styles Zeichen Second level UPDATE usrbf2 SET bname = sy-uname Third level WHERE bname = '????'. Fourth level Fifth level 54 Zeichen UPDATE usrbf2 SET bname = 'BOND' WHERE bname = '????'. © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL bearbeiten Vielen Dank für Ihr Interesse Click to edit Master text styles Second level Third level Fourth level Fifth level © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL bearbeiten Haben Sie noch Fragen? Click to edit Master text styles Second level Third level VIRTUALFORGE GmbH Fourth level [email protected] Fifth level Speyerer Straße 6 69115 Heidelberg Deutschland Telefon: + 49 (0) 6221 86 89 0 - 0 Fax: + 49 (0) 6221 86 89 0 – 101 Twitter: @codeprofiler © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved. TITEL bearbeiten Disclaimer Dieser Vortrag demonstriert Click to edit Master Sicherheitsrisiken text styles in der Sprache ABAP. Second level Third level Wenn bestimmte Sicherheitsfehler in ABAP möglich sind, bedeutet dies Fourth level nicht zwangsläufig , dass diese im SAP Standard Code vorhanden sind. Fifth level Virtual Forge hat allerdings sämtliche hier beschriebenen Fehler in Eigenentwicklungen bei SAP Kunden entdeckt. Virtual Forge rät ausdrücklich von Reisen in das Bermuda Dreieck ab. © © 2012 2011 Virtual Forge GmbH | www.virtualforge.com | All rights reserved.