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.