Oracle Database Security Assessment Tool

Datamaze
12.09.24 04:35 PM Comment(s)
Oracle Database Security Assessment Tool (DBSAT) fornisce raccomandazioni su come mitigare i rischi o le lacune di sicurezza identificate all'interno dei database Oracle. DBSAT profila lo stato di sicurezza e conformità dei database valutando lo stato corrente, inclusa la configurazione, rilevando inoltre i dati sensibili e altro ancora. 

Gli elementi di configurazione che sono analizzati dal tool sono organizzati nelle seguenti categorie: 
  • Basic Information – versione del database, features di sicurezza attive, check sulle patch installate. 
  • User Accounts – utenti presenti, ruoli assegnati, profili, password policy, utenti con dati sensibili, etc. 
  • Privileges and Role – privilege e ruoli assegnati, privilegi, ruoli e package assegnati a PUBLIC, etc. 
  • Authorization Control – verifica su features di sicurezza (data masking, database vault, password all’interno di script o job). 
  • Fine-Grained Access Control.
  • Auditing – policy di audit in uso.
  • Encryption – verifica su TDE, DBMS_CRYPTO, TLS. 
  • Database Configuration – parametri di configurazione database, control files, redologs, trigger, database link, Network access control. 
  • Network Configuration – verifica network encryption. 
  • Operating System – CMAN Remote admin, diagnostic destination. 
Inoltre il tool verifica la presenza di dati sensibili all’interno delle tabelle del database. 

Componenti del Tool DBSAT

Il DBSAT è costituito dalle seguenti componenti: Collector, Reporter e Discoverer. 

Il Collector esegue query SQL e comandi di sistema operativo per raccogliere le informazioni che poi saranno oggetto di valutazione. Lo fa principalmente interrogando le viste del dizionario del database. I dati raccolti vengono scritti in un file JSON che viene utilizzato dal DBSAT Reporter in fase di analisi. Da tener presente che se il collector viene lanciato da server remoto non raccoglierà i dati del sistema operativo. Si consiglia di eseguirlo dal database server per raccogliere tutti i dati rilevanti. 

Il Reporter analizza i dati raccolti e genera il report di valutazione della sicurezza del database Oracle nei formati HTML, Excel, JSON e testo. Il Reporter può essere eseguito su qualsiasi macchina: PC, laptop o server senza l’obbligo di eseguirlo sullo stesso server dove è stato lanciato il Collector. 

Il Discoverer esegue query SQL e raccoglie metadati dal database da valutare, in base alle impostazioni specificate nei file di configurazione. Lo fa principalmente interrogando le viste del dizionario del database. I dati raccolti vengono quindi utilizzati per generare il report di valutazione dei dati sensibili del database Oracle nei formati HTML e CSV. Discoverer può essere eseguito su qualsiasi macchina: PC, laptop o server. Non è obbligatorio eseguirlo sul database server o sulla stessa macchina del Collector o del Reporter. 

La figura seguente mostra i componenti, l’origine dati e le diverse tipologie di report generati da Oracle Database Security Assessment Tool.

Oracle DBAT

Prerequisiti e configurazione

DBSAT è un tool che Oracle mette a disposizione gratuitamente, non richiede quindi il pagamento di una licenza aggiuntiva. È possibile scaricare lo zip che contiene le query e librerie necessarie per la sua esecuzione e richiede la creazione di una specifica utenza con privilegi sulle viste di catalogo sul database che sarà oggetto di assessment. 

DBSAT può essere eseguito sui seguenti sistemi operativi: 
  • Linux x86-64 e Linux 64-bit Arm;
  • Windows x64;
  • Solaris x64 e Solaris SPARC64;
  • IBM AIX (64-bit) a Linux su zSeries (64-bit);
  • HP-UX IA (64-bit).

DBSAT gira su Oracle a partire dalla versione 11.2.0.4 e successive sia on-premise che in Cloud, sia su versione Standard Edition 2 che Enterprise edition. 

Dal momento che DBSAT produce report che descrivono, se presenti, le vulnerabilità del nostro database, è opportuno trattare con estrema cura i report generati, distribuendoli con un formato che sia protetto e sicuro, condividendoli solo se criptati. Si consiglia inoltre di revocare all’utente con il quale DBSAT è stato eseguito i privilegi sul catalogo quando non più necessari.

Framework di sicurezza e best practice Oracle

DBSAT integra Oracle Best Practices, Center for Internet Security (CIS) Benchmark e la Security Technical Implementation Guide (STIG) del Dipartimento della difesa statunitense (DISA) per il database Oracle per identificare potenziali rischi per la sicurezza nei database. 

Inizialmente, DBSAT si concentrava principalmente sui benchmark STIG e CIS, ma con la versione 3.0 e successive evidenzia anche i risultati che rappresentano le best practices di Oracle. 

Alcuni controlli sono designati solo come Oracle Best Practices (OBP). Ciò potrebbe essere dovuto a vari fattori, come differenze nei cicli di rilascio o una comprensione più approfondita del funzionamento interno di Oracle. Ad esempio, mentre Oracle rilascia nuove funzionalità, possono volerci anni prima che gli standard le includano. Ad esempio, Oracle ha introdotto il rollover graduale della password in Oracle Database 19c nel 2021, ma fino all'aprile 2024 non si rifletteva in STIG o CIS. 

Il sistema di tagging di DBSAT consente agli utenti di concentrarsi sui risultati rilevanti per i loro standard di conformità. Sia che cerchino la conformità STIG, l'adesione al benchmark CIS o l'allineamento con le best practices di Oracle, gli utenti possono facilmente trovare e dare priorità ai risultati in base ai loro requisiti specifici (vedi immagine sotto).

Users default passwords
Ricapitolando, DBSAT mappa i risultati su: 
  • STIG V2R8.
  • Benchmark CIS del database Oracle 19c v1.2.
  • Migliori pratiche Oracle.
  • Articoli e considerando del Regolamento generale sulla protezione dei dati dell'Unione Europea (GDPR UE) 2016/679.

Oracle Database Security Assessment Collector and Reporter

I componenti Collector e Reporter vengono utilizzati per generare il report Oracle Database Security Assessment (DBSAT) nei formati HTML, Excel, JSON e testo. Tutti i report contengono informazioni simili ma in formati diversi.


DBSAT reporter

Nella parte superiore del report troveremo le informazioni sui dettagli di esecuzione del Collector e del Reporter, come la raccolta dei dati e le date di generazione del report, insieme alla versione del reporter. Seguono le informazioni di dettaglio del database e quindi, la tabella di riepilogo Summary che presenta tutti i risultati per sezione/dominio e il relativo livello di severity. 


Risultati (Findings)

L'analisi risultante dal reporter DBSAT viene riportata in unità chiamate Findings e in ciascun risultato viene visualizzato: 
  1. ID regola: l'ID regola è composto da due parti: il prefisso identifica la sezione del report e il suffisso identifica la regola specifica. 
  2. On-line summary: riepilogo di una riga che evidenzia l'obiettivo e il contesto di ciascun controllo.
  3. Status: lo stato aiuta a stabilire le priorità nell'implementazione delle raccomandazioni DBSAT. Indica il livello di rischio associato al rilievo, consentendo di prendere decisioni informate sulla riparazione.
    - High risk - Ha bisogno di attenzione immediata;
    - Medium Risk - Pianificare di affrontarli a breve termine;
    - Low Risk - Potrebbe essere risolto durante i tempi di inattività programmati o abbinato ad altre attività di manutenzione;
    - Evaluate - Necessita di analisi manuale;
    - Advisory - Costituisce un'opportunità di miglioramento e aumenta la consapevolezza sugli altri controlli di sicurezza             disponibili nel database Oracle;
    - Pass - Non sono stati riscontrati rischi.
    - Summary: fornisce un riepilogo del risultato. Quando il risultato è informativo, il riepilogo in genere riporta solo il numero di           elementi di dati esaminati.
    - Details: fornisce informazioni dettagliate per spiegare il riepilogo dei risultati, in genere i risultati del database valutato, seguiti     da eventuali raccomandazioni per le modifiche.
    - Remarks: spiegare il motivo della regola e le azioni consigliate per la risoluzione.
    - Riferimenti: se il risultato è una Oracle Best Practice (OBP) correlata a una raccomandazione Oracle Database 12c STIG V2R8,     CIS Oracle Database Benchmark 12c v2.0.0 o correlata a un articolo/considerando GDPR, verrà menzionato qui. 
Assessment
Non entreremo nel dettaglio delle diverse categorie ma riporteremo alcuni esempi di findings di alcune delle categorie indicate al fine di dare un’idea delle potenzialità della componente Collector al fine di verificare il livello di sicurezza del nostro database Oracle. 

Finding 1: in riferimento al password file, si evidenzia una corretta configurazione dello stesso, in riferimento ai benchmark CIS, OBP e STIG: viene segnalato col colore verde.

access to password file

Finding 2: in riferimento ai benchmark CIS, OBP eSTIG si è rilevata una non conformità di livello Medium Risk (evidenziato in arancione). Nello specifico ci sono 4 utenti, DBSAT_USER, SYSTEM, GIALLO e ROSA che NON hanno una funzione di verifica della complessità delle password. GIALLO e ROSA sono stati creati da noi a titolo esemplificativo, SYSTEM è utente nativo Oracle e DBSAT_USER è l’utente di servizio creato per il tool DBSAT.


Oracle Requirements

Finding 3: Sono stati rilevati due utenti con ruolo ad ALTISSIMO potenziale SYSDBA e sono SYS (utente nativo Oracle) e GIALLO (utente creato da noi a scopo esemplificativo). In questo caso DBSAT avvisa della situazione lasciando però al Database Administrator la valutazione del fattore di rischio di tale configurazione. 

Privileges

Finding 4: Si segnala che le connessioni tra client e database usano un canale di comunicazione NON criptato. In questo caso si tratta di High Risk secondo i 3 benchmark di sicurezza e viene segnalato in rosso.


Network configuration

Oracle Database Security Assessment Discoverer

La componente Discoverer è utilizzata per generare l’Oracle Database Sensitive Data Assessment Report. Il Discoverer esegue query SQL e raccoglie i dati dal database sotto assessment basandosi sui settaggi specificati nel file di configurazione e nel pattern file. 

Nell’immagine sotto sono descritte le componenti e l’architettura del Discoverer.
Oracle Discoverer

Come dicevamo il comportamento del Discoverer è determinato dalla configurazione di due files, il dbsat.config e il pattern.ini. 

Dbsat.config
Il dbsat.config descrive sostanzialmente i parametri di configurazione dell’istanza (nome_db, porta, wallet_location, etc), il nome del file nel quale sono definiti i pattern dei dati sensibili da discoverare e l’elenco degli schema oggetto di assessment e in ultimo le categorie dei dati sensibili con la definizione di quello che si ritiene il livello di rischio (High, Medium, Low).  

Se ne riporta sotto uno a titolo di esempio, usato per effettuare i nostri test di discoverer. La sezione [Database] descrive i parametri per la connessione al database - nel caso di studio stiamo puntando al database ORCL, sul server locale localhost e risponde sulla porta 1521, la sezione [Discovery Parameters] dice che sto utilizzando come sensitive_pattern_file il file my_sensitive2_it.ini all’interno del quale definisco le regole per indicare quali per me sono i tipi di dati sensibili e gli schma in scope, nel nostro esempio schema_scope = ALL. In ultimo la sezione [Sensitive Categories] che definisce, per le diverse categorie di dati ( Identification, Biographic, Financial, Health,...) il livello di priorità che noi decidiamo di assegnare. 

Dbsat config

Sensitive_<lang>.ini 

Questo è il file fondamentale per permettere al Discoverer di trovare all’interno delle nostre tabelle quelli che noi definiamo dati sensibili. Nella cartella dbsat\Discover\conf Oracle mette a disposizione una serie di file nelle diverse lingue (inglese, italiano, francese, etc.) nei quali vengono elencati i nomi delle colonne delle tabelle che contengono dati sensibili con diversi pattern di ricerca. Si riportano sotto a titolo di esempio le definizioni per trovare nelle tabelle dati sensibili relativi all’orientamento sessuale, con le regular expression utilizzate per effettuare la ricerca nelle colonne delle tabelle usando il dizionario delle lingue inglese ed italiana rispettivamente: 

English

# Health Info - Provider Data 

[HEALTHCARE PROVIDER] 

COL_NAME_PATTERN = (^|[_-])(DENTISTS?|DOCTORS?|PHYSICIANS?|THERAPISTS?|CLINICS?|HOSPITALS?|PHARMAC(Y|IES)|HEALTH.?CARE.*PROVIDERS?|PRIMARY.?CARE)($|[_-]) 

COL_COMMENT_PATTERN = \bDENTIST\b|\bDOCTOR\b|\bPHYSICIAN\b|THERAPIST|\bCLINICS?\b|\bHOSPITALS?\b|PHARMAC(Y|IES)|PRIMARY.?CARE|HEALTH.?CARE PROVIDERS? 

SENSITIVE_CATEGORY = Health Info - Provider Data 

 

Italian 

# Health Info - Provider Data  

[HEALTHCARE PROVIDER - IT] 

COL_NAME_PATTERN = (^|[_-])(DENTIST(A|I)|MEDIC(O|I)|TERAPIST(A|I)|CLINIC(A|HE)|OSPEDAL(E|I)|FARMACI(A|E)|FORNITOR(E|I).*SANITARIA?|ASSISTENZA.?SANITARIA.*BASE)($|[_-]) 

COL_COMMENT_PATTERN = \bDENTIST(A|I)\b|\bMEDIC(O|I)\b|\bTERAPIST(A|I)\b|\bCLINIC(A|HE)\b|\bOSPEDAL(E|I)\b|\bFARMACI(A|E)\b|FORNITOR(E|I).*SANITARIA?|ASSISTENZA.?SANITARIA.*BASE 

SENSITIVE_CATEGORY = Health Info - Provider Data 

 

Nel nostro caso di studio abbiamo creato la tabella ANNA.MEDICI così fatta:

tabella oracle

Il Discoverer intercetta quindi la colonna CLINICA all’interno della tabella e la segnala come tabella con dati sensibili, questo perchè nel file sensitive_it.ini, nel COL_NAME_PATTERN abbiamo definito che colonne che si chiamino CLINICA (o CLINICHE) siano colonne che contengono dati sensibili. Il colore arancione indica che quel dato è stato da noi classificato come Medium Risk.

Provider data

É possibile anche definire nostri dati sensibili, non inclusi nei file sensitive_<lang>.ini forniti da Oracle, a titolo di esempio abbiamo creato una nuova categoria di dati, relativa agli animali domastici, inserendola nel nostro file .ini con queste direttive: 

 

[PET - IT] 

COL_NAME_PATTERN = ANIM*|RAZZ* 

COL_COMMENT_PATTERN =  

SENSITIVE_CATEGORY = Biographic Info - Extended PII 

 

istruendo quindi il Discoverer a cercare nelle tabelle tutte quelle che hanno colonne con nome ANIM(ali) o RAZZ(a), nel nostro caso abbiamo creato la tabella ANNA.CUCCIOLI. 

tabella cuccioli

Discoverer intercetta la tabella, rileva che è ad High Risk (informazione codificata attraverso il colore rosso), qui insieme alla tabella PERSONE:

biografic info

E nel Summary riporta le informazioni riassuntive. 


A screenshot of a computer Description automatically generated

Conclusioni

In un momento storico, nel quale sempre più l’argomento sicurezza risulta fondamentale, DBSAT si propone come strumento di reale e fattivo supporto per garantire il controllo sui nostri dati. É uno strumento che permette una verifica dell’infrastruttura dell’istanza (sia lato sistema operativo che lato parametri di configurazione) e la verifica della presenza di dati ‘sensibili’ contenuti nel nostro database. Su questo fronte in particolare si rileva essere uno strumento estremamente flessibile sia perchè costruito per intercettare parole chiave in diverse lingue (quelle di uso più comune) sia perchè permette di creare nuove categorie di dati sensibili che non sono incluse tra quelle più comuni (abbiamo mostrato l’esempio della categoria PET). 

E’ inoltre uno strumento nativo di Oracle che si aggiorna costantemente sia rispetto agli organismi di sicurezza internazionali sia rispetto alle best practices Oracle stesse acquisite con la gestione delle più diverse tipologie di database. 

Ultimo elemento da considerare il costo del prodotto che è totalmente FREE.

di Anna Bruno, pubblicato il 12 settembre 2024