(3) … (2) … (1) … (SAP_ALL) - Virtual

Werbung
Andreas Wiegenstein
Xu Jia
(3) … (2) … (1) … (SAP_ALL)
„Sicherheit und Prüfung von SAP Systemen“ – 13. und 14. September, Hamburg
www.ibs-schreiber.de
(3) SAP Audits und Eigenentwicklungen
(2) Sicherheitsrisiken in ABAP
(1) Prüfung von Eigenentwicklungen
(SAP_ALL) Demos
www.ibs-schreiber.de
(3) SAP Audits und Eigenentwicklungen
www.ibs-schreiber.de
SAP Audits
• Prüfungsaktivitäten beziehen sich auf den SAP Standard
– Schutz von Transaktionen
– Schutz von Tabellen
– SoD
• Prüfungen basieren auf SAP Standard
– Kritische Transaktionen sind bekannt
– Kritische Tabellen sind bekannt
www.ibs-schreiber.de
SAP Standard - Schutz nach Standard
Transaktionaler Schutz : Anlegen von ABAP Programmen
S_TCODE ?
ABAP Workbench (SE80)
S_DEVELOP ?
Produktivsystem ?
INSERT REPORT
Erzeugt ABAP Programme
www.ibs-schreiber.de
SAP Audits
Segeln in vertrauten Gewässern
www.ibs-schreiber.de
Eigenentwicklungen
Aber was, wenn die Regeln nicht mehr gelten?
www.ibs-schreiber.de
Eigenentwicklungen in Zahlen
Unternehmen haben ~ 1.65 Mio LOC Custom ABAP (netto) *
Dies entspricht etwa 1% des SAP Standards (ECC 6.0)
Das wären 8 Bermuda Dreiecke auf der Erde, was der doppelten
Fläche des Mittelmeeres entspräche.
* Virtual Forge Studie mit 45 Firmen und 100 Mio LOC (netto)
Netto = Code ohne Kommentare und Leerzeilen
www.ibs-schreiber.de
ABAP Code im IKS Kontext
IKS-Struktur im ERP-Umfeld
Generellen IT Kontrollen (ITGC - IT General Controls)
Änderungswesen (Change Management)
ABAP Code
Risiken für Geschäftsprozesse
Vollständigkeit
Richtigkeit
Funktionstrennung
Rechte
Nachvollziehbarkeit
Datenschutz
…
www.ibs-schreiber.de
SAP Audits
Ein Unternehmen haftet immer für eigenen Code*
Relevanz
• Hausinterne Entwicklung
• Outsourcing
• Firmenzukäufe
* (Chuprunov, SAP Revision, SAP Press, 2012)
www.ibs-schreiber.de
Eigenentwicklungen
Eigenentwicklungen können sämtliche Regeln außer Kraft setzen
Risiko
Transaktion ZTRANS1
Erzeugt ABAP Programme
Risiko
Funktionsbaustein ZFB1
INSERT REPORT
Risiko
Transaktion ZTRANS2
Risiko
Funktionsbaustein ZFB2
Risiko
REPORT ZREP
Risiko
Business Server Page ZBSP
Risiko
Web Dynpro Anwendung ZWD
www.ibs-schreiber.de
(2) Sicherheitsrisiken in ABAP
Grafikquelle: http://de.wikipedia.org/wiki/Europa
www.ibs-schreiber.de
Kritische ABAP Befehle
Befehl
Wirkung
INSERT REPORT
Erstellung von ABAP Code
- Keine S_DEVELOP Prüfung
- Keine Prüfung auf Produktivsystem
- Ermöglicht direkte Modifikation des Standards
CALL 'SYSTEM'
CALL 'ThWpInfo'
Ausführung beliebiger Betriebssystem-Kommandos
- Bypass von SM49/SM69
- Keine S_LOG_COM Prüfung
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
www.ibs-schreiber.de
Sicherheitsrisiken im ABAP
Was kann schief gehen?
1. Berechtigungsfehler
2. Injection Schwachstellen
3. Hintertüren und Standard-Bypasses
4. Datenlecks
www.ibs-schreiber.de
#1 Berechtigungsfehler
IF sy-uname <> for_user.
AUTHORITY-CHECK OBJECT 'S_DEVELOP'
ID 'DEVCLASS' DUMMY
ID 'OBJTYPE' FIELD
ID 'OBJNAME' FIELD
ID 'P_GROUP' DUMMY
ID 'ACTVT'
FIELD
ELSE.
AUTHORITY-CHECK OBJECT 'S_DEVELOP'
ID 'DEVCLASS' DUMMY
ID 'OBJTYPE' FIELD
ID 'OBJNAME' DUMMY
ID 'P_GROUP' DUMMY
ID 'ACTVT'
FIELD
IF sy-subrc <> 0.
cx_wd_general=>raise( text-001 ).
ENDIF.
ENDIF.
'DEBUG'
for_user
'90'.
'DEBUG'
'03'.
www.ibs-schreiber.de
#1 Berechtigungsfehler - Statistik
Es gibt im Schnitt 1 kritischen Berechtigungsfehler alle 1.400 LOC*
* Virtual Forge Studie mit 45 Firmen und 100 Mio LOC (netto)
Netto = Code ohne Kommentare und Leerzeilen
www.ibs-schreiber.de
#2 Injections
DATA promotion TYPE string.
DATA filename TYPE string.
DATA mytext
TYPE string.
promotion = request->get_form_field('promo').
CONCATENATE '/sap/tmp/data/' promotion INTO filename.
OPEN DATASET filename FOR INPUT IN 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.
www.ibs-schreiber.de
#2 Injections
„Normale“ Eingabe durch Benutzer
promo=flightapp/promotion/summer.txt
Resultierender Dateizugriff
/sap/tmp/data/flightapp/promotion/summer.txt
( Injection durch Zeichenfolge ../ )
Unerwartete Eingabe durch Benutzer
promo=../../../etc/passwd
Resultierender Dateizugriff
/sap/tmp/data/../../../etc/passwd
/sap/tmp/../../etc/passwd
/sap/../etc/passwd
/etc/passwd
DEMO
www.ibs-schreiber.de
#2 Injections – Statistik
Es gibt im Schnitt 1 kritische Injection Schwachstelle alle 5.800 LOC*
* Virtual Forge Studie mit 45 Firmen und 100 Mio LOC (netto)
Netto = Code ohne Kommentare und Leerzeilen
www.ibs-schreiber.de
#3A Hintertüren beim Kunden
„Die drei Entwickler“
Produktive BSP Anwendung mit versteckter Seite
• Für „normale“ Benutzer leer
• Für drei Entwickler Hintertür, um beliebige Tabellen auszulesen
DEMO
www.ibs-schreiber.de
#3B Hintertüren im Standard
Direkte Eingabe von “OK Codes” in Transaktion RSRV
1.
2.
Normaler Programmfluss:
Versteckter Programmfluss:
"display"
"editor_call"
Keine „echte“ Hintertür, aber ein schönes „Osterei“
www.ibs-schreiber.de
#4 Datenlecks
Fehlerhafter RFC-fähiger Funktionsbaustein
• Input: PERID ppp und PERNR nnn
• Output im Fehlerfall: „Die angegebene PERID und PERNR passen
nicht zusammen. Der PERNR nnn ist PERID xxx zugeordnet.“
STORY
www.ibs-schreiber.de
(1) Prüfung von Eigenentwicklungen
www.ibs-schreiber.de
BIZEC APP/11 Prüfempfehlungen
ID
Schwachstelle
Beschreibung
APP-01
ABAP Command Injection
Ausführung beliebigen ABAP Codes
APP-02
OS Command Injection
Ausführung beliebiger Betriebssystem-Kommandos
APP-03
Improper Authorization
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)
(Missing, Broken, Proprietary, Generic)
www.ibs-schreiber.de
Weitere Informationen
Organisationen
BIZEC – Business Security Initiative
http://www.bizec.org
Literatur
Sichere ABAP-Programmierung
(SAP PRESS, 372 S., 2009)
Andreas Wiegenstein, Markus Schumacher,
Sebastian Schinzel, Frederik Weidemann
Handbuch SAP-Revision
(SAP PRESS, 700 S., 2012)
Maxim Chuprunov
www.ibs-schreiber.de
(SAP_ALL) Demos
www.ibs-schreiber.de
ABAP Command Injection
Funktionale Analyse des Befehls INSERT REPORT
1. Auswirkungen auf die Authorization Trace
2. Auswirkungen auf einem Produktivsystem
3. Modifikation des SAP Standards
DEMO
www.ibs-schreiber.de
Quiz
Was ist der kürzeste Weg
mittels ABAP Code
SAP_ALL Berechtigung
zu erhalten?
www.ibs-schreiber.de
Lösung
56 Zeichen
UPDATE usrbf2 SET bname = sy-uname
WHERE bname = '????'.
54 Zeichen
UPDATE usrbf2 SET bname = 'JIAX'
WHERE bname = '????'.
www.ibs-schreiber.de
Vielen Dank für Ihr Interesse
www.ibs-schreiber.de
Haben Sie noch Fragen?
VIRTUALFORGE GmbH
[email protected]
[email protected]
Speyerer Straße 6
69115 Heidelberg
Deutschland
Telefon: + 49 (0) 6221 86 89 0 - 0
Fax:
+ 49 (0) 6221 86 89 0 - 101
www.ibs-schreiber.de
Disclaimer
Dieser Vortrag demonstriert Sicherheitsrisiken in der Sprache ABAP.
Das bestimmte Sicherheitsfehler in ABAP möglich sind, bedeutet nicht,
dass solche Fehler im SAP Standard Code vorhanden sind.
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.
www.ibs-schreiber.de
Herunterladen