Durch die tägliche “Oracle Support Hot Topics” E-Mail bin ich auf ein neues und mir noch unbekanntes Tool mit dem Namen Oracle Database Security Assessment Tool (kurz DBSAT) gestoßen. Mithilfe dieses Tools lassen sich Verwundbarkeiten und Fehlkonfigurationen einer Datenbank und des darunter liegenden Betriebssystems ermitteln.
Dieser Blogeintrag stellt DBSAT und dessen Konfiguration und Verwendung kurz vor.
Table of Contents
Was ist DBSAT?
DBSAT ist ein kommandozeilen-basiertes Tool für fast alle gängigen Plattformen (inklusive Windows), das in Python geschrieben wurde und aus den beiden Komponenten DBSAT Collector und DBSAT Reporter besteht. Das Hauptziel des Tools ist das Auffinden möglicher Sicherheitsprobleme einer Datenbank und des darunter liegenden Betriebssystems (ausgenommen Windows). Die gefundenen Probleme werden in Form eines Berichtes (PDF, Excel, Testdatei) präsentiert.
Alle Datenbanken-Versionen ab 10.2.0.5 werden unterstützt.
DBSAT Collector
Der DBSAT Collector wird auf dem Datenbankserver ausgeführt und ist für das Sammeln der notwendigen Informationen verantwortlich. Über SQL Anweisungen und das Ausführen von Betriebssystem-Kommandos (ausgenommen Windows) werden die Daten erfasst und in einer JSON Datei abgespeichert. Zum Abschluss der Erfassung wird, bei Verwendung der Standardwerte, die generierte JSON Datei mit dem ZIP Tool gepackt und verschlüsselt.
Als Benutzer für die Anmeldung an der Datenbank kann entweder ein bestehender Benutzer (z.B. SYSTEM) verwendet oder ein neuer Benutzer mit den folgenden Berechtigungen angelegt werden.
Objekttyp | Name | Anmerkung |
Privileg | CREATE SESSION | |
Rolle | SELECT_CATALOG_ROLE | |
Rolle | DV_SECANALYST | Nur bei Verwendung von Database Vault |
Rolle | AUDIT_VIEWER | >= 12c |
Rolle | CAPTURE_ADMIN | >= 12c |
Objektprivileg | SELECT ON SYS.REGISTRY$HISTORY | |
Objektprivileg | SELECT ON SYS.DBA_USERS_WITH_DEFPWD | >= 11g |
Objektprivileg | SELECT on AUDSYS.AUD$UNIFIED | >= 12c |
Für das (ent)packen der JSON Datei wird das zip bzw. unzip Tool verwendet. DBSAT setzt dafür die folgenden symbolischen Links voraus.
- ZIP: /usr/bin/zip
- UNZIP: /usr/bin/unzip
Sollten diese Pfade nicht existieren, müssen entweder symbolische Links angelegt oder die folgenden Zeilen in der dbsat Datei geändert werden.
# Default location of zip and unzip. May be modified if necessary. ZIP=/usr/bin/zip UNZIP=/usr/bin/unzip DBZIP=${ORACLE_HOME}/bin/zip
DBSAT Reporter
Die vom DBSAT Collector erfassten Daten, können mtihilfe des DBSAT Reporters analysiert werden. Die Analyse muss nicht auf dem Datenbankserver stattfinden. Der DBSAT Reporter kann auf jedem Server/Client ausgeführt werden auf dem Python installiert ist. Die Python-Version muss 2.6 oder höher sein, andernfalls verweigert das Tool den Start.
Error: Python version 2.6 or later is required.
Installation
Eine Installation von DBSAT ist nicht notwendig. Es muss lediglich das ZIP Archiv, das über die MOS Note “Oracle Database Security Assessment Tool (DBSAT) (Doc ID 2138254.1)” verfügbar ist, heruntergeladen und in ein beliebiges Verzeichnis entpackt werden. Alle Schritte sollten mit dem Oracle Home Owner (z.B. oracle) ausgeführt werden.
$> unzip -d dbsat dbsat.zip
Datenerfassung
Im ersten Schritt werden die Daten durch DBSAT Collector erfasst. Der generelle Aufruf ist wie folgt.
$> dbsat collect [ -n ] <Verbindungszeichenkette> <Ausgabe-Datei>
Wird der Parameter -n übergeben, wird die generierte JSON Datei nicht verschlüsselt.
Bevor DBSAT ausgeführt wird, sollten die Umgebungsvariablen für die zu analysierende Datenbank gesetzt werden. Wenn dies gemacht ist, wird DBSAT wie folgt gestartet. Ich verwende den Benutzer SYSTEM für die Anmeldung an der Datenbank L121EEC1.
$> ./dbsat collect system L121EEC1_DBSAT This tool is intended to assist in you in identifying potential vulnerabilities in your system, but you are solely responsible for your system and the effect and results of the execution of this tool (including, without limitation, any damage or data loss). Further, the output generated by this tool may include potentially sensitive system configuration data and information that could be used by a skilled attacker to penetrate your system. You are solely responsible for ensuring that the output of this tool, including any generated reports, is handled in accordance with your company's policies. Connecting to the target Oracle database... SQL*Plus: Release 12.1.0.2.0 Production on Thu Jun 23 13:16:50 2016 Copyright (c) 1982, 2014, Oracle. All rights reserved. Enter password: Last Successful login time: Thu Jun 23 2016 11:46:51 +02:00 Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options Setup complete. SQL queries complete. OS commands complete. Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options DBSAT Collector completed successfully. Calling /u00/app/oracle/product/12.1.0.2-ee/bin/zip to encrypt L121EEC1_DBSAT.json... Enter password: Verify password: adding: L121EEC1_DBSAT.json (deflated 86%) zip completed successfully.
Anmerkung: Verbindet man sich bei einer Container-Datenbank mit dem CDB$ROOT Container, wird nur dieser analysiert. Möchte man eine Pluggable-Database analysieren, muss man sich gegen diese direkt verbinden.
Analyse der Daten
Für die Analyse der Daten wird der DBSAT Reporter wie folgt ausgeführt.
$> ./dbsat report -a -n L121EEC1_DBSAT This tool is intended to assist in you in identifying potential vulnerabilities in your system, but you are solely responsible for your system and the effect and results of the execution of this tool (including, without limitation, any damage or data loss). Further, the output generated by this tool may include potentially sensitive system configuration data and information that could be used by a skilled attacker to penetrate your system. You are solely responsible for ensuring that the output of this tool, including any generated reports, is handled in accordance with your company's policies. Archive: L121EEC1_DBSAT.zip [L121EEC1_DBSAT.zip] L121EEC1_DBSAT.json password: inflating: ./L121EEC1_DBSAT.json DBSAT Reporter ran successfully.
Wenn der -n Parameter nicht angegeben wird, werden die generierten Berichtsdateien archiviert und verschlüsselt.
Von den generierten Berichtsarten, liefert de HTML Version die meisten Details mit. Neben generellen Informationen zur Datenbank werden die Ergebnisse der durchgeführten Tests übersichtlich aufgeführt.
Ein Beispiel für einen fehlgeschlagenen Test.
Ein Beispiel für erfolgreiche Tests.
Hi Christian,
I’m writing to let you know that we just released DBSAT 2.2.2.
The main effort in this release was to make DBSAT able to differentiate an Oracle Database running on-premises,
from an autonomous database (shared or dedicated) or DBCS, and if makes sense do specific checks and recommendations.
You can read more about it in the release notes:
https://docs.oracle.com/en/database/oracle/oracle-database/21/satrn/#SATRN-GUID-41633A90-EEF1-419A-BA05-32D4C19FFE0F
Regards,
Pedro Lopes
Oracle Database Security
DBSAT PM
Hi Pedro,
thank you for the info. I will test the new version when I find some time.
Cheers
Christian