Politecnico
di Milano
QuickTime™ e un
decompressore TIFF (Non compresso)
sono necessari per visualizzare quest'immagine.
Analisi e Valutazione sulla sicurezza delle
applicazioni web generate con
WebML/WebRatio
31 Maggio 2005
Luca Carettoni - [email protected]
Sicurezza nelle web application
Un requisito importante, al pari di quelli funzionali, che spesso viene
trascurato…
Le applicazioni diventano sempre più aperte e flessibili; garantire il
paradigma CIA non è un compito semplice:
HTTP è un protocollo debole
Un web server, per sua stessa natura, è un servizio esposto con
meccanismi più o meno funzionali di autenticazione e/o
autorizzazione
Applicazioni “data-intensive” sono un obiettivo appetibile per un
aggressore.
@stake stima che il 70% delle applicazioni analizzate, presenta delle
vulnerabilità rilevanti.
Qualche esempio: Sql Injection,Transversal Directory, XSS, etc..
$query = sprintf("SELECT * FROM %s WHERE owner='%s' AND nickname='%s'",
$this->table, $this->owner, $alias);
$res = $this->dbh->query($query);
E se $alias contenesse ' UNION ALL SELECT * FROM address WHERE '1'='1 ?
-2-
Web Hacking Methodology utilizzata per le
applicazioni WebML/WebRatio
Due livelli di analisi:
Modello concettuale
Considerazioni generali sull’uso di un metodo formale per lo sviluppo;
Mapping tra elementi del modello e valutazione dei rischi;
Implementazione automatica delle applicazioni
Profiling;
Tentativi di attacco alla piattaforma di deployment;
Tentativi di attacco ai meccanismi di autenticazione;
Tentativi di attacco ai meccanismi di autorizzazione;
Tentativi di attacco alla gestione delle sessioni;
Problematiche di Input Validation;
Tentativi di attacco alla base di dati;
-3-
Valutazione dei rischi associati al modello
Utilizzare un modello formale per lo sviluppo di software permette di avere una
visione globale del progetto, oltre ad aiutare le varie fasi dello sviluppo stesso
(analisi di sicurezza compresa!)
Nei tools che utilizzano il modello è possibile effettuare controlli in maniera
automatica (Es: Validità dell’hypertext)
Sono molteplici i casi di attacco sferrati su pagine di test, che andavano
rimosse…test.php, debug.asp e sqlquery.jsp
Generare del codice da un modello formale pone una serie di problematiche
intrinseche:
Replicazione degli errori
Approccio black-box VS (quasi) white box
Sviluppo agevolato ≠ Tutti possono fare web application
Ogni elemento del modello è un potenziale candidato per differenti
vulnerabilità
-4-
Casi di studio: Acme e Gestione Corsi
Seguendo lo schema precedentemente illustrato abbiamo analizzato due applicazioni
implementate con WebRatio.
Forniamo ora una brevissima panoramica sui risultati:
Profiling
- a livello applicativo: simulando una normale interazione dell’utente e attraverso lo
studio del progetto WebRatio
- a livello di piattaforma di deployment: manualmente e con strumenti di scansione
automatica (Nmap, Amap, Nikto, Nessus, etc.)
Anche da remoto, si evince che la piattaforma di deployment risulta esser una
configurazione base dell’application server Apache Tomcat con servizi di management
attivati, presenza di file di esempio, directory listing, ect.
Attacco alla piattaforma di deployment
La versione di Tomcat presente con WebRatio è SOLAMENTE una piattaforma usabile in
fase di testing, sebbene l’integrazione possa indurre ad usare inizialmente il servizio
integrato.
-5-
Casi di studio: Acme e Gestione Corsi
Tentativi di attacco ai meccanismi di autenticazione
- SQL-Backend Login Form
Meccanismo fondamentalmente sicuro a causa della buona validazione
dell’input effettuata tramite il framework Struts.
SELECT A1.oid_2, A2.groupoid, A4.siteviewid
FROM usertable A1, usertable A2, grouptable A3, siteviewtable A4
WHERE (A1.username = ‘admin’ ) --’) AND ((A1.password = ‘$pass’) OR
(A1.password IS NULL AND ‘$pass’ IS NULL)) AND (A1.oid_2 = A2.oid_2) AND
(A2.groupoid = A3.oid_2) AND (A3.siteviewoid = A4.oid_2)
E’ però possibile fare di più:
Confronto tra hash invece che tra coppie di password
Eventuali timeout per applicazioni critiche
Abilitare SSL
-6-
Casi di studio: Acme e Gestione Corsi
Tentativi di attacco ai meccanismi di autorizzazione
- Concetto di SiteView, Utenti e Gruppi.
- Meccanismo comune di RBAC
Meccanismo concettualmente sicuro, anche se all’interno della singola SiteView
non viene definito automaticamente un meccanismo forte di separazione
dei dati tra utenti con gli stessi privilegi.
Tale vulnerabilità permette un attacco
denominato Horizontal Privilege Escalation.
Cosa si può fare:
Abilitare l’opzione “Use URL checksum for pages” nelle security
properties;
Introdurre meccanismi a livello di logica applicativa;
-7-
Casi di studio: Acme e Gestione Corsi
Tentativi di attacco alla gestione delle sessioni
- Cookies contenenti un Session ID
- Stringhe alfanumeriche da 32 caratteri
- Sembrerebbe il risultato di una digest function (MD5 forse!) applicata ad
informazioni legate all’utente con un seme random (timestamp+seed forse!)
Attaccare questo aspetto significa, in pratica, essere in grado di generare dei
fake token. Ma non è un compito semplice!
Se fosse MD5(Epoch Time, Server Secret, Pass, User) sarebbe
computazionalmente impossibile un attacco a forza bruta.
Validazione dell’input
Struts fornisce un ottimo sub-framework per la validazione. In aggiunta:
Definire delle validazioni specifiche per il contesto applicativo
(WebRatio permette l’uso di predicati ed espressioni regolari)
Porre attenzione a tutti gli input, file compresi!
(vedi vulnerabilità nella gestione degli stores in Acme! )
-8-
Conclusioni
WebML e WebRatio possono veramente agevolare ed aiutare lo sviluppo di
un’applicazione, anche per gli aspetti legati alla sicurezza.
La validazione dell’input, problema principale delle web apps, sembra ridotto
grazie all’uso del framework OpenSource Struts e dei ValidatorBean.
Serve comunque sempre uno sviluppo attento che cerchi di porre rimedio ad
eventuali problemi tramite la logica applicativa e che adotti tutte le soluzioni
fornite dall’ambiente di sviluppo per assicurare la confidenzialità, l’integrità e
la disponibilità dei dati.
Sono a vostra disposizione per eventuali domande.
Grazie per l’attenzione!
-9-
Scarica

Lucidi