Oracle Database Security Assessment Tool

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.

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.

Referenzen

2 comments

  1. 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

    1. Hi Pedro,

      thank you for the info. I will test the new version when I find some time.

      Cheers
      Christian

Leave a Reply to Pedro Lopes Cancel reply

Your email address will not be published. Required fields are marked *