Lücke in Oracle 11gR2 ermöglicht System-Privilegien für jeden [Update]
Durch Fehler in Oracles Java-Implementierung können Anwender der Datenbankversion 11gR2 beliebige Rechte erlangen.
- Christian Kirsch
Auf der vor Kurzem zu Ende gegangenen Blackhat-Konferenz DC 2010 hat der britische Sicherheitsexperte David Litchfield Lücken in Oracles neuester Datenbank-Release 11gR2 demonstriert. Zu großzügig gesetzte Rechte für Java-Prozeduren erlaubten es Benutzern, ihre eigenen Rechte zu erhöhen – bis hin zu einer vollständigen Kontrolle über die Datenbank.
Denn die Prozeduren im Package DBMS_JVM_EXP_PERMS darf jeder Benutzer der Datenbank ausführen. Das Paket soll die Aktualisierung von Oracle-Installationen vereinfachen. Insbesondere kann ein Anwender mit der Prozedur IMPORT_JVM_PERMS seine Rechte in der Java-Policy-Tabelle so ändern, dass die JVM ihm das Ausführen von Betriebssystem-Befehlen sowie das Lesen und Schreiben von Dateien gestattet.
Diese Lücke allein gibt einem nicht-privilegierten Benutzer jedoch noch keine Chance, solche Operationen auszuführen: Das verhindert zunächst Oracles eigenes System aus Rechten (privileges) und Rollen (roles). In Verbindung mit einem weiteren Fehler kann er jedoch diese Privileges beliebig anpassen. Dazu dient die Prozedur DBMS_JAVA.SET_OUTPUT_TO_JAVA. Sie startet eine neue Java VM mit den Rechten des SYS-Benutzers und führt zuvor ihr übergebenen SQL-Code ebenfalls als dieser Benutzer aus. Litchfield zeigte, wie ein rechteloser Anwender durch einen passenden Parameter im Aufruf von DBMS_JAVA.SET_OUTPUT_TO_JAVA zum DBA-User mit allen Rechten aufsteigen kann. Anschließend ist es ihm wegen der bereits angepassten Java-Policy-Tabelle möglich, Betriebssystem-Befehle auszuführen. Litchfield illustrierte das unter Windows 7, indem er einen neuen Benutzer anlegte und diesem anschließend Administratorrechte gab.
Außerdem demonstrierte er, dass sich die so genannte Label Security der Datenbank umgehen lässt, für die Oracle eine EAL4-Zertifizierung nach den Common Criteria erhalten hat. Diese Technik soll sicherstellen, dass Anwender nur die für sie bestimmten Informationen sehen können. Er zeigte, dass sich durch Lücken in der Java-Implementierung beliebige dynamische Bibliotheken in den Oracle-Prozess laden lassen. Dadurch haben sie Zugriff selbst auf solche Daten, die Label Security strikt abriegeln sollte.
Litchfield soll Oracle bereits im November letzten Jahres über die Lücken informiert haben, bislang gibt es jedoch keinen Patch. Als ersten Schutz empfiehlt er, für die Packages DMBS_JAVA, DBMS_JAVA_TEST und DBMS_JVM_EXP_PERMS die großzügigen Ausführungsrechte für PUBLIC zu entfernen.
Update: Auf der Blackhat-Website gibt es ein Video des Vortrags. (ck)