Cos’è
Seguro! è un sistema che permette di gestire l’esecuzione dei test di sicurezza delle applicazioni Web senza alcuno scambio di documenti relativi alle eventuali vulnerabilità rilevate.
Grazie a Seguro! è possibile definire e applicare un processo chiaro e immutabile per la gestione dei test, identificando le responsabilità dei singoli attori e tenendo traccia di ogni evento occorso, in modo che sia sempre possibile capire chi ha fatto (o non ha fatto) cosa.
Tutte le informazioni relative alle applicazioni in esame restano all’interno del sistema; i messaggi di notifica inviati agli utenti non rivelano l’esito degli attacchi e non contengono né il nome dell’applicazione né la URL vulnerabile, ma solo dei codici identificativi.
Il sistema non esegue scansioni automatiche ma può acquisire i file di log di prodotti come Burp o AppScan in modo da rendere più rapido l’inserimento di eventuali vulnerabilità.
Caratteristiche del sistema
Seguro! è un’applicazione Web-based scritta in linguaggio PHP.
Ha un’interfaccia utente intuitiva e coerente che ne facilita l’utilizzo anche al personale non tecnico.
Il dialogo con la base-dati mySQL avviene per mezzo di stored-procedure che rendono più sicuro e affidabile il sistema.
L’accesso degli utenti può avvenire o con utenze locali o con utenze LDAP.
L’autenticazione può avvenire o con username e password o con un certificato digitale generato dal sistema e una password.
Il sistema ha un doppio sistema di log degli eventi, che vengono salvati sia nella base-dati del sistema che su un file esterno, in modo da avere un riscontro in caso di alterazioni casuali o intenzionali.
Rischi connessi ai test di sicurezza
I testi di sicurezza delle applicazioni Web, siano essi vulnerability assessment, DAST o pen-test, comprendono almeno le seguenti fasi:
-
Censimento del sistema: raccolta delle informazioni necessarie all’esecuzione del test, come URL, credenziali di accesso, architettura, funzioni, ecc.
-
Esecuzione del test: il sistema viene sottoposto a verifica, registrando l’esito di ciascuna prova effettuata.
-
Notifica esito test: i risultati della verifica vengono notificati al gruppo di sviluppo.
-
Correzione delle vulnerabilità: il gruppo di sviluppo corregge il codice o modifica la configurazione del sistema, in modo da sanare le vulnerabilità rilevate.
-
Verifica delle correzioni: il test viene ripetuto, per verificare che le correzioni apportate abbiano sanato le vulnerabilità.
Ciascuna di queste fasi comporta uno scambio di informazioni estremamente riservate sul sistema; in particolare, richiede necessariamente che il gruppo che esegue i test comunichi al gruppo di sviluppo le vulnerabilità riscontrate.
I rapporti sono trasmessi (usualmente) in maniera sicura, per mezzo di documenti cifrati, ma il numero elevato di destinatari delle informazioni (owner dei sistemi, capi progetto, sviluppatori, ecc.) fa sì che le informazioni siano presenti in chiaro su più postazioni di lavoro (o cellulari), rendendo il processo poco sicuro.
Se il computer di uno degli attori è compromesso, o se un programmatore inesperto stampa il rapporto e lo lascia sulla sua scrivania, la sicurezza del sistema è a rischio.
Benefici di Seguro!
Tutti questi problemi vengono risolti da Seguro! manenendo all’interno del sistema tutte le informazioni che potrebbero consentire un attacco.
I resoconti prodotti da Seguro!, siano essi rapporti sull’esito di una sessione di test o messaggi relativi a una singola vulnerabilità non riportano mai informazioni sulle URL vulnerabili, ma solo i codici alfanumerici che le identificano all’interno del sistema.
In questo modo, anche se un utente malintenzionato venisse in possesso degli esiti di un test, avrebbe solo un elenco generico delle vulnerabilità dell’applicazione, ma senza dati utili per sfruttarle.
Un ulteriore beneficio di Seguro! è che impone a ciascun attore un processo ben definito e immutabile, evitando deviazioni dalle buone prassi di comportamento.
L’autenticazione con certificati digitali (non obbligatoria, ma caldamente consigliata) garantisce inoltre la non-ripudiabilità delle azioni effettuate dagli utenti.
Le tabelle riassuntive nella home-page di ciascun utente permettono ai responsabili delle diverse funzioni di avere costantemente sott’occhio lo stato di avanzamento dei test di loro pertinenza.
Utenze e gruppi di utenza
Seguro! ha una suddivisione molto granulare dei ruoli degli utenti; questo permette di concedere sempre il minimo dei privilegi possibili a ciascun utente.
Gli utenti con ruoli gestionali, di contro, possono “degradarsi” e assumere un ruolo esecutivo per portare a termine autonomamente alcune fasi del processo anche in caso di assenze per malattia o nei periodi di ferie.
Gli utenti sono suddivisi in tre gruppi:
- esercizio: responsabili dell’esercizio dei sistemi;
- sicurezza: utenti che si occupano della sicurezza dei sistemi;
- sviluppo: utenti che si occupano dello sviluppo applicativo dei sistemi.
Per una descrizione completa delle utenze e dei ruoli, si veda il documento di Presentazione.
Flusso del programma
Il flusso del programma può suddiviso in tre fasi:
- esecuzione dei test di sicurezza;
- correzione delle vulnerabilità:
- verifica delle correzioni;
Test di sicurezza
- il responsabile del Collaudo crea un nuovo modulo e lo rilascia per i test;
- il responsabile del Gruppo Sicurezza avvia il test del modulo;
- i membri del Gruppo Sicurezza verificano le diverse URL del modulo e riportano nel sistema l’esito degli attacchi;
- il responsabile del Gruppo Sicurezza chiude i test con esito OK o KO;
- il responsabile Web esamina gli esiti del test e decide se mandarlo in esercizio o se rimandarlo al Gruppo di Sviluppo per la correzione.
Correzione
Se il modulo è vulnerabile, viene sottomesso al Gruppo di Sviluppo per le correzioni del caso:
- i membri del Gruppo di Sviluppo correggono gli errori rilevati;
- il responsabile dello Sviluppo chiude la fase di correzione e il modulo torna al Gruppo Sicurezza per la verifica delle correzioni.
Verifica delle correzioni
Quando il modulo torna al Gruppo di Sicurezza per la verifica delle correzioni:
- i membri del Gruppo Sicurezza verificano che gli attacchi riusciti nella fase precedente non siano più possibili;
- il responsabile del Gruppo Sicurezza verifica gli esiti dei controlli effettuati, li ripete o li approfondisce, se necessario e quando tutte le vulnerabilità rilevate sono state sottoposte a controllo, chiude il test con esito OK o KO, a seconda dell’esito delle verifiche;
- il responsabile Web esamina gli esiti della verifica e, di nuovo, decide se mandarlo in esercizio o se rimandarlo al Gruppo di Sviluppo per la correzione.
Per una descrizione del processo di test e correzione, si veda il documento di Presentazione.