Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Smau Milano 2014 - Andrea Zwirner

1.158 visualizaciones

Publicado el

Sicurezza delle applicazioni web

Publicado en: Tecnología
  • Inicia sesión para ver los comentarios

  • Sé el primero en recomendar esto

Smau Milano 2014 - Andrea Zwirner

  1. 1. 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web 1 Sicurezza delle applicazioni web Andrea Zwirner – Linkspirit andrea@linkspirit.it @AndreaZwirner
  2. 2. Andrea Zwirner 2  Mi interesso di sicurezza informatica dallo scorso millennio – “Connettere” significava “intrecciare” – Hacker non aveva ancora alcun significato  Ho fondato Linkspirit, azienda che si occupa di sicurezza informatica – Consulenza nella progettazione sicura di software e sistemi – Verifiche di sicurezza su software e sistemi – Formazione in materia di sicurezza informatica 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  3. 3. Andrea Zwirner 3  Partecipo a diversi progetti legati la ricerca e divulgazione della cultura sulla sicurezza informatica 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  4. 4. La sicurezza informatica 4 Insieme di misure di carattere organizzativo, tecnologico e procedurale mirate a garantire – CONFIDENZIALITÀ – INTEGRITÀ – DISPONIBILITÀ 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web dell'informazione.
  5. 5. Sicurezza applicativa 5  Modellazione ed analisi dei rischi derivanti dal software  Consapevolezza di analisti, sviluppatori, beta tester, utenti finali – Sviluppo dell'architettura (secure by design) – Ciclo di sviluppo del software – Scrittura del codice – Controlli di sicurezza comuni nelle fasi di test / review – Utilizzo consapevole da parte degli utenti 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  6. 6. 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web 6
  7. 7. Consapevolezza 7 “Ensuring cybersecurity is a common responsibility. End users play a crucial role in ensuring the security of networks and information systems: they need to be made aware of the risks they face online and be empowered to take simple steps to guard against them.” 23 ottobre 2014 SMAU 2014 Se non si coinvolgono gli utenti, ogni sforzo è vano Cybersecurity Strategy of the European Union Commissione europea, febbraio 2013 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  8. 8. Consapevolezza 8 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  9. 9. Titolo della Presentazione e della slide 9 “[…] al fine di rafforzare le capacità nazionali di prevenzione, reazione e ripristino […] individua come nodi primari […]: promozione e diffusione della cultura della sicurezza cibernetica sia tra i cittadini che all’interno delle istituzioni [...] al fine di accrescere il livello di consapevolezza e di conoscenza della minaccia e dei relativi rischi” 23 ottobre 2014 SMAU 2014 Quadro strategico nazionale per la sicurezza dello spazio cibernetico Presidenza del Consiglio dei Ministri, dicembre 2013 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  10. 10. Sicurezza delle applicazioni web 10  Il web non è stato progettato per essere ne dinamico ne sicuro – Contenuti statici in sola lettura – Nessuna sicurezza implicita (o “by design”)  Il Web 2.0 eredita queste peculiarità dal suo predecessore, fornendo – Ampia superficie d'attacco – Svariati petabyte di informazioni di miliardi di utenti (privati, – Accesso diretto alle macchine degli utenti stessi 23 ottobre 2014 SMAU 2014 aziende, banche e governi) Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  11. 11. La metodologia 11 23 ottobre 2014 SMAU 2014 O W A S P The Open Web Application Security Project Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  12. 12. Cos'è l'OWASP 12  Associazione senza scopo di lucro  Missione: “aumentare la visibilità relativa la sicurezza del software al fine di permettere di prendere decisioni informate ad imprese ed individui” 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  13. 13. Cosa fa l'OWASP 13  Attiva nel campo della ricerca e divulgazione della cultura della 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web sicurezza  Mantiene svariati (e rinomati) progetti legati la sicurezza applicativa  Includono informazioni circa librerie, API, best practices, auditing, suddivisi nelle tre categorie – Protect – Detect – Life Cycle
  14. 14. Progetti OWASP interessanti 14  Top Ten Project  Mobile Security Project – Top Ten Mobile Risks – Top Ten Mobile Controls  Development Guide  Secure Coding Practices - Quick Reference Guide  Code Review Guide  Testing Guide – Web Goat Project 23 ottobre 2014 SMAU 2014 ENISA – European Network and Information Security Agency Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  15. 15. Top Ten Project 15  Descrive le dieci vulnerabilità valutate come più rischiose in ambito 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web web application  Indirizzato a sviluppatori, designer, manager ed organizzazioni  Fornisce linee guida per prevenire e rilevare le vulnerabilità descritte  Indipendente da linguaggio / framework utilizzato
  16. 16. Top Ten 2013 16  A1: Injection  A2: Broken Authentication and Session Management  A3: Cross-Site Scripting (XSS)  A4: Insecure Direct Object References  A5: Security Misconfiguration  A6: Sensitive Data Exposure  A7: Missing Function Level Access Control  A8: Cross-Site Request Forgery (CSRF)  A9: Using Known Vulnerable Components  A10: Unvalidated Redirects and Forwards 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  17. 17. A1 – Injection 17  La vulnerabilità – Si verifica quando dati non fidati sono inviati direttamente ad un interprete (SQL, OS, LDAP, etc) – Un attaccante può inviare richieste forgiate in modo da forzare l'interprete ad eseguire comandi non previsti 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web  Vettori d'attacco – Qualunque fonte di dati, incluse quelle interne
  18. 18. A1 – Impatti 18  Difficoltà di sfruttamento: semplice  Impatto tecnico: grave – Takeover del completo database (e.g. sqlmap) – Eliminazione / alterazione dei dati gestiti dall'interprete – Blocco / corruzione / possesso del sistema informatico  Impatto sul business: non determinato – Proporzionale all'importanza dei dati gestiti a livello di business 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  19. 19. A1 – Esempio SQL Injection 19  Parametrizzazione insicura di una query SQL 1. var_id = _post(id); 2. query = “SELECT * FROM tab WHERE id = '” + var_id + “'”; 3. result = invia_query_al_database(query); 4. fai_qualcosa_con(result); 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  20. 20. A1 – Esempio SQL Injection 20  Parametrizzazione insicura di una query SQL 1. var_id = _post(id); 2. query = “SELECT * FROM tab WHERE id = '” + var_id + “'”; 3. result = invia_query_al_database(query); 4. fai_qualcosa_con(result); 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web  Parametri attesi _post(id) = n naturale (o, al più, intero)
  21. 21. A1 – Esempio SQL Injection 21  Parametrizzazione insicura di una query SQL 1. var_id = _post(id); 2. query = “SELECT * FROM tab WHERE id = '” + var_id + “'”; 3. result = invia_query_al_database(query); 4. fai_qualcosa_con(result); 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web  Parametri attesi _post(id) = n naturale (o, al più, intero)  Esempio di parametro inatteso _post(id) = 23'; DROP TABLE tab; --
  22. 22. A1 – Esempio SQL Injection 22  Parametrizzazione insicura di una query SQL 1. var_id = _post(id); 2. query = “SELECT * FROM tab WHERE id = '” + var_id + “'”; 3. result = invia_query_al_database(query); 4. fai_qualcosa_con(result); SELECT * FROM tab WHERE id = '23'; DROP TABLE tab; --' 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web  Parametri attesi _post(id) = n naturale (o, al più, intero)  Esempio di parametro inatteso _post(id) = 23'; DROP TABLE tab; --
  23. 23. A1 – Injection fun! 23 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  24. 24. A1 – Injection fun! 24 ZU 0666',0,0); DROP DATABASE TABLICE; -- 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  25. 25. A1 – OS Injection 25  Parametrizzazione insicura di un comando shell 23 ottobre 2014 SMAU 2014 1. var_ip = _post(ip); 2. command = “/bin/ping -c2 ” + var_ip; 3. result = esegui_comando(command); 4. stampa_nella_pagina(result); Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web  Parametri attesi _post(ip) = ip (indirizzo IP)  Esempio di parametro inatteso _post(ip) = 127.0.0.1; cat /etc/passwd
  26. 26. A1 – Prevenzione 26  Utilizzare API che neghino l'uso diretto dell'interprete, fornendo un interfaccia parametrizzata  Fare escaping dei caratteri speciali, usando le sequenze specifiche 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web per l'interprete  Attenzione: utilizzare WAF o white list canonizzando i comandi permessi può essere utile, ma non necessariamente risolutivo – C'è sempre chi conosce le regexp meglio di te!
  27. 27. A1 – Rilevazione 27  Se non sono stati definiti pattern di sviluppo, si è vulnerabili. 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web  Revisione del codice – Verifica della separazione fra gli interpreti ed i dati non fidati  Penetration test
  28. 28. A1 – Esempio di parametrizzazione sicura 28  Parametrizzazione sicura di una query (PHP + MySQL + mysqli) 1. $var_id = $_POST['id']; 2. $query = $db_conn->prepare('SELECT * FROM tab WHERE id = ?'); 3. $query.bind_param('id', $var_id); 4. $query.execute(); 5. $result = $query.get_result(); 6. fai_qualcosa_con($result); 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  29. 29. A2 – Broken Auth and Session Mgmt 29  Si verifica quando le funzioni legate ad autenticazione e gestione delle sessioni permettono la compromissione di password, chiavi o token di sessione o hanno falle nell'implementazione che possono portare ad assumere l'identità di utenti legittimi 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web  Vettori d'attacco – Sistemi di autenticazione ed autorizzazione
  30. 30. A2 – Impatti 30  Difficoltà di sfruttamento: media 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web  Impatto tecnico: grave – Accesso con i privilegi di autorizzazione di qualunque utente, anche amministrativo  Impatto sul business: non determinato – Proporzionale al valore di business dei dati trattati o delle funzioni applicative – Considerare l'impatto sul business della pubblicazione della falla (attacchi e reputazione)
  31. 31. A2 – Scenari d'attacco 31  Brute force su password o username – password deboli  Predizione di identificativo di sessione o credenziali di accesso  Replay – autenticazione al di fuori di un canale crittografato  Session spotting – assegnazione di sessione al di fuori di un canale 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web crittografato  Session fixation – assegnazione malevola di sessione precedente-mente avviata  Timeout di sessione troppo lunghi o inesistenti  Password non crittografate o non salate nella base dati
  32. 32. A2 – Prevenzione 32  Mettere a disposizione degli sviluppatori un singolo e sicuro insieme di controlli per l'autenticazione e la gestione delle sessioni che – Abbia un'interfaccia semplice da utilizzare – Sia ben documentato – Aderisca ad uno standard affiabile  Verificare che i controlli non siano vulnerabili ad attacchi di tipo XSS (→ A3: XSS), che permetterebbero il furto di sessioni 23 ottobre 2014 SMAU 2014 ● Application Security Verification Standard (ASVS) Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  33. 33. A2 – Rilevazione [1/2] 33  Il concetto principe è la verifica di protezione di credenziali ed id di sessione – Le credenziali sono salvate usando hash (salted) o crittografia? – E' possibile indovinare o modificare le credenziali mediante – Gli id di sessione sono esposti negli URL? – Gli id di sessione sono vulnerabili ad attacchi del tipo session fixation? 23 ottobre 2014 SMAU 2014 errori nelle funzioni di gestione degli account? ● Creazione, cambio / recupero password, etc Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  34. 34. A2 – Rilevazione [2/2] 34  Le sessioni hanno timeout?  Gli utenti possono disconnettersi?  Gli id di sessione sono cambiati in seguito ad ogni variazione nel livello di autorizzazione?  Le password e gli id di sessione sono scambiati attraverso canali crittografati? (→ A6: Sensitive Data Exposure) 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  35. 35. A4 – Insecure Direct Object References 35  Si verifica quando l'applicazione usa riferimenti diretti ad oggetti (es. file, directory, chiavi db) per la generazione delle pagine, senza verificare che l'utente che li richiede abbia i permessi di autorizzazione necessari a manipolarli 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web  Vettori di attacco – Cambio di riferimenti ad oggetti da parte di utenti (eventualmente) autenticati in url o parametri GET/POST
  36. 36. A4 – Impatti 36  Difficoltà di sfruttamento: semplice  Impatto tecnico: medio – Compromissione (lettura e/o scrittura) di tutti i dati referenziati dal parametro  Impatti sul business: non determinati – Proporzionali al valore di business dei dati trattati – Considerare l'impatto sulla reputazione 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  37. 37. A4 – Scenario d'attacco 37 1. conto = _post['conto']; 2. query = prepara('SELECT * FROM conti WHERE conto = %', conto); 3. result = invia_al_database(query); 4. fai_qualcosa_con(result);  L'attaccante non deve fare altro che modificare il parametro POST conto ed otterrà il risultato per un conto per cui non possiede autorizzazione. 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  38. 38. A4 – Prevenzione 38  L'approccio è quello di proteggere qualunque oggetto accessibile dagli utenti – Usare riferimenti indiretti agli oggetti (per utente o sessione):  Esempio: non mettere gli Id a database in una drop-down list, ma una mappatura degli stessi generata dinamicamente per la sessione attiva  Verificare l'autorizzazione prima di fornire il contenuto 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  39. 39. A4 – Esempio sicuro 39  Mappatura agli oggetti 1. query = prepara('SELECT prendiContiSessione(%)', session_id); 2. conti[] = invia_al_database(query); 3. metti_conti_in_dropdown(conti[], dropdown); … qui c'è l'interazione dell'utente … 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  40. 40. A4 – Esempio sicuro 40 1. map_conto = prendi_indice_selezionato(dropdown); 2. query = prepara('SELECT verificaPermessi(%,%)', 3. result = invia_al_database(query); 4. if (result) { 5. tutto_ok_procedi(); 6. } else { 7. biasima_utente_e_disconnetti(session_id); 8. } 23 ottobre 2014 SMAU 2014 conti[map_conto], session_id); Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  41. 41. A4 – Rilevazione e prevenzione 41  Verificare che tutti i riferimenti ad oggetto siano indiretti e protetti adeguatamente – Mappatura dinamica e limitata alle risorse cui l'utente (o la – Verifica d'autorizzazione in scrittura nel caso di successiva richiesta di manipolazione degli oggetti referenziati – In caso di incongruenza chiudere le sessioni!!  Nel (malaugurato) caso di necessità di riferimenti diretti, valgono le 23 ottobre 2014 SMAU 2014 sessione) ha autorizzazione in lettura Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web stesse regole!
  42. 42. 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web 42 Sicurezza delle applicazioni web Andrea Zwirner – Linkspirit andrea@linkspirit.it @AndreaZwirner
  43. 43. A8 – Cross-site Request Forgery (CSRF) 43  Si verifica quando è possibile prevedere ogni parametro richiesto per effettuare una specifica chiamata a funzione.  In questo caso è possibile far eseguire operazioni non volute al browser di un utente legittimo 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web  Vettori d'attacco – Iniezione di richieste HTTP forgiate via tag d'immagine, XSS, iframe o altre tecniche – Hanno successo ogni qual volta l'utente è già autenticato
  44. 44. A8 – Impatti 44  Difficoltà di sfruttamento: media  Impatto tecnico: medio – Per quanto distruttive, l'attaccante può far eseguire solo funzioni cui l'utente è autorizzato  Impatto sul business: non determinato – Considerare l'importanza a livello di business dei dati trattati – Considerare l'importanza di non essere certi dell'effettiva intenzione dell'utente 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  45. 45. A8 – Esempio 45  L'utente è autenticato sul sito www.sito.it e visita (volontariamente o meno) una pagina del sito dell'attaccante contenente: <img src='http://www.sito.it/esegui=vuota_db'  All'invio della richiesta HTTP, il browser includerà automaticamente le informazioni di sessione dell'utente sul sito www.sito.it e la funzione verrà eseguita 23 ottobre 2014 SMAU 2014 width='0' height='0'> Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  46. 46. A8 – Prevenzione 46  Includere un token unico e casuale in ogni pagina che preveda interazione da parte dell'utente, inserendolo in un campo nascosto e verificandolo ad ogni richiesta ricevuta  Richiedere ri-autenticazione o prova di umanità (captcha), per le 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web funzioni più delicate  Ricordarsi di applicare timeout con tempi inversamente proporzionali al livello di autorizzazione degli utenti
  47. 47. A8 - Rilevazione 47  Verificare se ogni link o modulo include un campo contenente un token unico, dinamico e non calcolabile  Assicurarsi che le funzioni chiamate verifichino il token (!)  Form e link che invocano sulle funzioni che alterano lo stato dei dati sono le più gettonate – In caso di limiti di tempo o budget concentrarsi su queste  Tenere in considerazione che, per prevenire attacchi del tipo CSRF, non si può fare affidamento su cookies o indirizzi IP di provenienza 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web
  48. 48. 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web 48 Sicurezza delle applicazioni web Andrea Zwirner – Linkspirit andrea@linkspirit.it @AndreaZwirner
  49. 49. Riferimenti 49  OWASP – Documenti citati nella presentazione e gli Cheat Sheet.  P. Litwin – Stop SQL Injection Attacks Before They Stop You – Microsoft MSDN  B. Damele – Advanced SQL injection to operating system full control – 2009  Defuse Security – Password Hashing Security: Salted Password Hashing – Ding it right – 2013  R. Ivgi – XSS : Cross Site Scripting - Exposed - Why, How, When, Where!  E. Benoist – Broken Authentication and Session Management – 2012 – In realtà Benoist è svizzero ed ha erroneamente scritto “Brocken” invece che “Broken” nel titolo della versione 2012 del documento.  K. Kuliukas – How Rainbow Tables work  B. Hardin – Series about the Owasp Top 10 – 2009  Euorpean Commission – Cybersecurity Strategy of the European Union – 2013  Presidenza del Consiglio dei Ministri – Quadro strategico nazionale per la sicurezza dello 23 ottobre 2014 SMAU 2014 Andrea Zwirner – Linkspirit Sicurezza delle applicazioni web spazio cibernetico - 2013

×