MySAT (MySQL Security Assessment Tool) e' un semplice strumento
che consente di eseguire una verifica di sicurezza sulle basi dati
MySQL.
MySAT e' un tool Open Source, quindi di utilizzo gratuito
[NdA utilizza la licenza MIT che e' molto libera];
il software e' disponibile su GitHub.
MySAT e' stato implementato per rendere l'esecuzione dei comandi e l'intepretazione dei risultati la piu' semplice ed immediata possibile.
Le verifiche di sicurezza sulle basi dati sono molto importanti anche per l'imminente scadenza per adeguarsi del regolamento europeo 2016/679 sulla protezione dei dati personali: il noto GDPR (General Data Protection Regulation) [NdE la scadenza era il 2018/05/25].
Scaricare il tool da GitHub e lanciare lo script SQL con:
Viene generato il file MySAT.htm che contiene il risultato dell'analisi di sicurezza.
La password in chiaro nel lancio dello script non va bene: e' consigliato l'uso del login_path; il contenuto del file contiene informazioni riservate: e' consigliato crittografarlo e storicizzarlo; ... con la sicurezza non va bene avere fretta: continuate a leggere!
L'assessment sulla configurazione delle basi dati e' un passo fondamentale per garantire la sicurezza delle basi dati. MySAT e' un tool Open Source, realizzato in SQL (quindi di facile esecuzione e comprensione) che aiuta nell'analisi delle problematiche di sicurezza sul database MySQL. MySAT, almeno nella versione iniziale, offettua il maggior numero di controlli ed e' ottimizzato per MySQL Community Edition versione 5.7.
MySAT effettua i principali controlli sulla configurazione del DB.
Vengono effettuati una cinquantina di diversi controlli
sulla definizione delle utenze/ruoli, sulle autorizzazioni,
sulla configurazione della base dati
e riportati i principali dettagli della configurazione.
Le verifiche sono organizzate seguendo il documento sulle
problematiche di sicurezza su MySQL.
L'esecuzione del tool genera un report con i problemi di sicurezza riscontrati suddivisi per ambito e l'indicazione del livello di rischio associato. Naturalmente i problemi emersi vanno poi anche corretti!
Il software e' pubblicato su GitHub.
La cartella contiene lo script SQL, un file .CSS e la licenza (MIT) [NdA con l'uscita della versione 8.x di MySQL in produzione e' stato aggiunto uno script SQL specifico].
Lo script SQL mysat.sql e' utilizzabile direttamente da linea di comando con mysql.
Per collezionare i dati e' necessario lanciare il comando mysql con la password di root:
Lo script esegue la raccolta dati e la raccoglie direttamene su un file HTML. Il tempo necessario dipende dalla compessita' della base dati e dalle prestazioni del server... generalmente sono necessari pochi minuti.
Il report e' in formato HTML ed e' direttamente leggibile. La formattazione ideale si ottiene con il file mysat.css distribuito nel repository.
Il report contiene tre sezioni:
A loro volta i controlli di sicurezza sono organizzati per tipologia:
Per ogni controllo e' riportato il risultato in un riquadro colorato. I test eseguiti con successo sono di colore verde. I test che rilevano delle anomalie sono di colore giallo, arancione o rosso a secondo della gravita'. Alcuni test possono richiedere ulteriori valutazioni oppure richiedono strumenti o accessi esterni alla base dati.
La sezione della configurazione del database e' molto ampia:
inizia con una tabella di sommario che riporta le principali impostazioni
e prosegue con i dettagli di ogni componente della base dati.
I contenuti sono analoghi a quelli ottenuti con i tool my2html
e ux2html.
L'ultima sezione riporta tabelle di riferimenti incrociati.
La prima tabella riporta i principali articoli del regolamento UE 2016/679,
altrimenti noto come GDPR (General Data Protection Regulation),
ed i link ai relativi controlli.
La seconda tabella riporta le raccomandazioni del CIS
ed i link ai relativi controlli.
La terza tabella riporta i principali CVE pubblicati
e li confronta con la versione di MySQL presente.
L'analisi dei risultati ottenuti da MySAT e' semplice per un DBA esperto... ecco un esempio di report.
La maggioranza delle segnalazioni sono di immediata comprensione; eccone una:
Chiaramente l'auditing non e' configurato! [NdA da tempo la legge italiana prevede la registrazione degli accessi amministrativi sulle basi dati che contengono dati personali]. Vi sono altre tecniche utilizzabili per il monitoraggio degli accessi, MySAT verifica solo se e' stato attivato un plugin di auditing in MySQL.
Naturalmente i controlli possono avere anche esito positivo:
Alcune segnalazioni richiedono pero' verifiche che richiedono piu' tempo. MySAT ricerca le tabelle che contengono colonne di dati personali, tale ricerca non e' esaustiva ma fornisce una valida base di partenza. Sulle tabelle individuate MySAT verifica l'eventuale utilizzo della crittografia. MySAT puo' indicare che non e' configurata l'encryption per una tabella... ma per sapere con esattezza se e' necessario utilizzare la crittografia o meno e' necessaria una specifica analisi dei dati.
Come per tutti gli strumenti diagnostici anche per MySAT sono possibili falsi positivi e veri negativi: tutti i risultati ottenuti vanno validati ed analizzati.
Effettuata l'analisi e' necessario correggere i problemi
emersi, in particolare quelli di livello Severe e Significant Risk
che sono riportati in colore arancione ed in rosso.
Le segnalazioni di Low Risk indicano solo che
una funzionalita' di sicurezza non e' stata utilizzata in modo ottimale...
sarebbe buona norma risolvere anche queste ma non e' strettamente necessario.
L'adeguamento puo' avere in qualche caso un impatto sulle applicazioni,
naturalmente da valutare in modo preventivo su ambienti di sviluppo/test.
Da oggi [NdA 1 aprile 2021] e' disponibile una nuova versione aggiornata del tool.
Disponibile un aggiornamento tecnico [NdA 1 ottobre 2018] con le ultime release MySQL e l'aggiunta dei CVE nel report.
Da oggi [NdA 15 agosto 2018] e' disponibile un aggiornamento di MySAT che tiene conto delle nuove features della versione 8.0 e ne controlla il corretto utilizzo.
Da oggi [NdA 25 maggio 2018] il GDPR e' entrato pienamente in vigore, questo documento e le utilities descritte sono state aggiornate.
Da oggi [NdA 19 aprile 2018] e' disponibile, come versione di produzione, la versione 8.0 di MySQL. Sono interessanti alcune nuove funzionalita' sulla sicurezza: ROLES, password history, authentication plugin caching_sha2_password, Undo e Redo Log encryption.
L'assessment di sicurezza delle basi dati e' tipicamente il primo passo per l'adeguamento alle piu' recenti normative (eg. 196, GDPR, SOX, PCI-DSS, HIPAA, ...). MySAT fornisce, in modo rapido e semplice, un report completo, efficace e di immediata comprensione sulle basi dati MySQL.
MySAT e' un tool che va utilizzato con attenzione. I privilegi che richiede sono elevati ed il risultato ottenuto puo' consentire ad un estraneo di sfruttare una breccia di sicurezza.
Per la verifica della sicurezza di un database MySQL sono
molto completi e dettagliati sono i
CIS Benchmarks
che prevedono tutti i controlli necessari suddivisi
per tipo e versione di database: sono realizzati dal Center for Internet Security (CIS),
un organismo indipendente tra i piu' preparati sulla Cybersecurity.
Il report ottenuto con MySAT contiene riferimenti
alle raccomandazioni dei CIS Benchmark
ed agli
articoli del GDPR:
Mantenere aggiornato MySQL non e' solo importante per utilizzare una versione
con meno bug funzionali... nel report MySAT sono riportati i Common Vulnerabilities and Exposures
(CVE®)
con score piu' elevato e le versioni che ne sono affette.
MySAT contiene verifiche di sicurezza ulteriori rispetto ai soli controlli previsti dai CIS Benchmarks, dal GDPR o dalle precedenti disposizioni di legge. Nonostante questo MySAT non puo' sostituire in nessun caso i controlli eseguiti da un esperto ed un completo assessment di sicurezza, ma puo' solo essere un utile strumento per la raccolta di dati.
Titolo: MySAT
Livello: Medio
Data: 1 Aprile 2018
Versione: 1.0.4 -
1 Aprile 2021
Autore:
mail [AT] meo.bogliolo.name