Sicurezza delle applicazioni web

Documenti analoghi
Seminario sulla sicurezza delle applicazioni web

Applicazioni software e gestione delle vulnerabilità: un caso concreto di successo

Sicurezza informatica e responsabilità sociale, l'importanza della consapevolezza

Seminario sulla sicurezza delle applicazioni mobili

Indice register_globals escaping

Agenda. IT Security Competence Center Web Application Security. Web Application Security. Tito Petronio 03/03/2011

Seminario sulla sicurezza delle reti

Simone Riccetti. Applicazioni web:security by design

LBSEC.

Sicurezza delle applicazioni web: attacchi web

Sicurezza delle applicazioni web: attacchi web

Sicurezza delle applicazioni web: attacchi web

DIVISIONE DATA & NETWORK SECURITY

Dott. Marcello Pistilli Business Development Manager. del software alla produzione:

The first all-in-one Cloud Security Suite Platform

2011 Politecnico di Torino 1

Lezione 6. Siti, Utenti e Sessioni

Risultati, cioè attenzione ai risultati.

$whois. Introduzione Attacco a una webapp Attacco a un sistema Conclusioni. voidsec@voidsec.com

LBSEC.

Università di Ferrara Corso di Laurea Magistrale in Ingegneria Informatica e dell'automazione Ing. Massimo Carnevali Anno Accademico

Come mettere in ginocchio un'azienda (italiana) a colpi di click

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo

SMS Gateway - Specifiche WS. Specifica Tecnica

Security by design. Come la gestione di un progetto può minimizzare i rischi per il business. Alessio L.R. Pennasilico - apennasilico@clusit.

Concetti base di sicurezza applicativa web. Massimo Carnevali Responsabile Esercizio dei Sistemi Informativi Comune di Bologna

Navigazione automatica e rilevazione di errori in applicazioni web

PIATTAFORMA RISK MANAGEMENT I Risk

ALLE APPLICAZIONI WEB E IL MODO DI SCONFIGGERLI ROMA 7-9 GIUGNO 2010 VISCONTI PALACE HOTEL - VIA FEDERICO CESI, 37

SQL INJECTION. Details and Prevention. Programmazione Sicura. Giuseppe Pietravalle. Giuseppe Santaniello

Sicurezza delle applicazioni web

Analisi di vulnerabilità e prevenzione di attacchi SQL injection e Cross-site Scripting

IL GDPR E LA COMPLIANCE. Strumenti a servizio della sicurezza dei sistemi informativi

Servizi della biblioteca. Accedere alle risorse elettroniche da fuori rete Unimore

effe Document Versione build 100 QUICK START

Sicurezza delle reti 1

Attacchi Web. Davide Marrone

Attacchi alle applicazioni web: SQL injection e Cross-site scripting (XSS)

ALLEGATO AL CAPITOLATO TECNICO

KEN VAN WYK. SECURE CODING: Costruire Applicazioni Web sicure in Java/J2EE ROMA 2-4 NOVEMBRE 2009 RESIDENZA DI RIPETTA - VIA DI RIPETTA, 231

Analisi e Tecniche per il Penetration Testing di Applicazioni Web

Identity Access Management nel web 2.0

Laboratorio di Applicazioni Internet Anno Accademico 2005/2006

SHAREPOINT CONNECTOR PLUG-IN - short guide-

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE TRIENNIO: TERZA DISCIPLINA: INFORMATICA

Roberto Zampese Business Development Manager. ORACLE Italia

Quale è lo stato della sicurezza? Problemi di sicurezza nello sviluppo di applicazioni web. Problemi di sicurezza nello sviluppo di applicazioni web

Problemi di sicurezza nello sviluppo di applicazioni web. Quale è lo stato della sicurezza? Problemi di sicurezza nello sviluppo di applicazioni web

FRAMEWORK NAZIONALE PER LA CYBER SECURITY

Problemi di sicurezza nello sviluppo di applicazioni web

2011 Politecnico di Torino 1

SQL Injection The dark side of webapplication *** Siamo davvero certi che chi gestisce i nostri dati sensibili lo faccia in modo sicuro?

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Web Application (In)Security

IBM - IT Service Management 1

APPENDICE 4 AL CAPITOLATO TECNICO

OWASP Top10 Mobile Risks

Istituto Tecnico Industriale Statale Dionigi Scano Cagliari. Candidato: Medda Daniele Classe 5ª C Informatica Anno scolastico 2013/2014.

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 19 novembre Corso di laurea in Economia

Sicurezza delle applicazioni web: attacchi web

Le problematiche di Web Application Security: la visione di ABI Lab. The OWASP Foundation Matteo Lucchetti

Laboratorio di Basi di Dati

Vulnerabilità informatiche (semplici)..

LO SVOLGIMENTO DEL TEMA DI INFORMATICA

Symantec IT Management Suite 8.0 powered by Altiris technology

Servizio L2.S3.9 - Servizi professionali

KLEIS WEB APPLICATION FIREWALL

Registro elettronico scuola ospedaliera rel. 5.0

PHP PHP Hypertext Preprocessor

PIÙ CONTROLLO, PIÙ SICUREZZA. Business Suite

PRIMO MODULO. DURATA: 80 ore CONTENUTI

PTSv2 in breve: La scelta migliore per chi vuole diventare un Penetration Tester. Online, accesso flessibile e illimitato

(UN)SECURITY GUIDELINES. Best practice e linee guida per uno sviluppo sicuro e responsabile

Laboratorio di reti II: Problematiche di sicurezza delle reti

SCHEDA PROGETTO AGRITURISMO SECONDA FASE


INTRODUZIONE AD OMNET++

SETA Selection Tool del Sistema ARTIST

F-SECURE BUSINESS SUITE PREMIUM

Docente: Laura Po

penetration test (ipotesi di sviluppo)

L area pubblica è costituita da un portale informativo attraverso il quale è possibile effettuare la diffusione dell informazione.

CONTROLLI ESSENZIALI DI CYBERSECURITY

Protezione dei dati in azienda: la difficoltà di coniugare obiettivi e complessità

Introduzione al tema delle minacce di Phishing 3.0 attraverso tecniche di Cross Application Scripting

ITIL e PMBOK Service management and project management a confronto

Privacy(Policy( DAF(al. ( 2.(Tipologia(di(dati(raccolti#

SQL Server Introduzione all uso di SQL Server Dutto Riccardo. Dutto Riccardo - SQL Server 2008.

Introduzione alla programmazione strutturata

Progetto B. Utenti. Di conseguenza si potranno avere solo utenti di questi tipi

Furto Identità Digitale

ISTITUTO PARITARIO MICHELANGELO - RIMINI- PIANO DI LAVORO

Xerox FreeFlow Core 4.0 SP3 ( ) Versione documento 1.3 Ottobre P Xerox FreeFlow Core Guida alla protezione

CORSO MOC20331: Core Solutions of Microsoft SharePoint Server CEGEKA Education corsi di formazione professionale

La sicurezza informatica con. programmi open source

SISTEMI OPERATIVI, RETI, INTERNET

La Sicurezza nel Cloud Computing. Simone Riccetti IBM IT Security Architect

I SISTEMI OPERATIVI. Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore.

Corso di Web Programming

Introduzione a phpmyadmin

Transcript:

1 Sicurezza delle applicazioni web Andrea Zwirner Linkspirit andrea@linkspirit.it @AndreaZwirner Andrea Zwirner Linkspirit

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 Andrea Zwirner Linkspirit

Andrea Zwirner 3 Partecipo a diversi progetti legati la ricerca e divulgazione della cultura sulla sicurezza informatica Andrea Zwirner Linkspirit

La sicurezza informatica Insieme di misure di carattere organizzativo, tecnologico e procedurale mirate a garantire CONFIDENZIALITÀ INTEGRITÀ DISPONIBILITÀ dell'informazione. Andrea Zwirner Linkspirit 4

Sicurezza applicativa 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 Andrea Zwirner Linkspirit 5

6 Andrea Zwirner Linkspirit

Consapevolezza 7 Se non si coinvolgono gli utenti, ogni sforzo è vano 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. Cybersecurity Strategy of the European Union Commissione europea, febbraio 2013 Andrea Zwirner Linkspirit

Consapevolezza Andrea Zwirner Linkspirit 8

Titolo della Presentazione e della slide [ ] 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 Quadro strategico nazionale per la sicurezza dello spazio cibernetico Presidenza del Consiglio dei Ministri, dicembre 2013 Andrea Zwirner Linkspirit 9

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, aziende, banche e governi) Accesso diretto alle macchine degli utenti stessi Andrea Zwirner Linkspirit 10

La metodologia 11 OWASP The Open Web Application Security Project Andrea Zwirner Linkspirit

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 Andrea Zwirner Linkspirit

Cosa fa l'owasp Attiva nel campo della ricerca e divulgazione della cultura della 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 Andrea Zwirner Linkspirit 13

Progetti OWASP interessanti Top Ten Project Mobile Security Project Top Ten Mobile Risks Top Ten Mobile Controls ENISA European Network and Information Security Agency Development Guide Secure Coding Practices - Quick Reference Guide Code Review Guide Testing Guide Web Goat Project Andrea Zwirner Linkspirit 14

Top Ten Project 15 Descrive le dieci vulnerabilità valutate come più rischiose in ambito web application Indirizzato a sviluppatori, designer, manager ed organizzazioni Fornisce linee guida per prevenire e rilevare le vulnerabilità descritte Indipendente da linguaggio / framework utilizzato Andrea Zwirner Linkspirit

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 Andrea Zwirner Linkspirit

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 Vettori d'attacco Qualunque fonte di dati, incluse quelle interne Andrea Zwirner Linkspirit

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 Andrea Zwirner Linkspirit

A1 Esempio SQL Injection 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); Andrea Zwirner Linkspirit 19

A1 Esempio SQL Injection 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); Parametri attesi _post(id) = n naturale (o, al più, intero) Andrea Zwirner Linkspirit 20

A1 Esempio SQL Injection 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); Parametri attesi _post(id) = n naturale (o, al più, intero) Esempio di parametro inatteso _post(id) = 23'; DROP TABLE tab; - Andrea Zwirner Linkspirit 21

A1 Esempio SQL Injection 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); Parametri SELECT *attesi FROM tab WHERE id = '23'; DROP TABLE tab; --' _post(id) = n naturale (o, al più, intero) Esempio di parametro inatteso _post(id) = 23'; DROP TABLE tab; - Andrea Zwirner Linkspirit 22

A1 Injection fun! Andrea Zwirner Linkspirit 23

A1 Injection fun! ZU 0666',0,0); DROPAndrea DATABASE TABLICE; -Zwirner Linkspirit 24

A1 OS Injection Parametrizzazione insicura di un comando shell 1. var_ip = _post(ip); 2. command = /bin/ping -c2 + var_ip; 3. result = esegui_comando(command); 4. stampa_nella_pagina(result); Parametri attesi _post(ip) = ip (indirizzo IP) Esempio di parametro inatteso _post(ip) = 127.0.0.1; cat /etc/passwd Andrea Zwirner Linkspirit 25

A1 Prevenzione Utilizzare API che neghino l'uso diretto dell'interprete, fornendo un interfaccia parametrizzata Fare escaping dei caratteri speciali, usando le sequenze specifiche 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! Andrea Zwirner Linkspirit 26

A1 Rilevazione Se non sono stati definiti pattern di sviluppo, si è vulnerabili. Revisione del codice Verifica della separazione fra gli interpreti ed i dati non fidati Penetration test Andrea Zwirner Linkspirit 27

A1 Esempio di parametrizzazione sicura 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); Andrea Zwirner Linkspirit 28

A2 Broken Auth and Session Mgmt 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 Vettori d'attacco Sistemi di autenticazione ed autorizzazione Andrea Zwirner Linkspirit 29

A2 Impatti 30 Difficoltà di sfruttamento: media 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) Andrea Zwirner Linkspirit

A2 Scenari d'attacco 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 crittografato Session fixation assegnazione malevola di sessione precedentemente avviata Timeout di sessione troppo lunghi o inesistenti Password non crittografate o non salate nella base dati Andrea Zwirner Linkspirit 31

A2 Prevenzione 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 Application Security Verification Standard (ASVS) Verificare che i controlli non siano vulnerabili ad attacchi di tipo XSS ( A3: XSS), che permetterebbero il furto di sessioni Andrea Zwirner Linkspirit 32

A2 Rilevazione [1/2] 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 errori nelle funzioni di gestione degli account? Creazione, cambio / recupero password, etc Gli id di sessione sono esposti negli URL? Gli id di sessione sono vulnerabili ad attacchi del tipo session fixation? Andrea Zwirner Linkspirit 33

A2 Rilevazione [2/2] 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) Andrea Zwirner Linkspirit 34

A4 Insecure Direct Object References 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 Vettori di attacco Cambio di riferimenti ad oggetti da parte di utenti (eventualmente) autenticati in url o parametri GET/POST Andrea Zwirner Linkspirit 35

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 Andrea Zwirner Linkspirit

A4 Scenario d'attacco 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. Andrea Zwirner Linkspirit 37

A4 Prevenzione 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 Andrea Zwirner Linkspirit 38

A4 Esempio sicuro 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 Andrea Zwirner Linkspirit 39

A4 Esempio sicuro 40 1. map_conto = prendi_indice_selezionato(dropdown); 2. query = prepara('select verificapermessi(%,%)', conti[map_conto], session_id); 3. result = invia_al_database(query); 4. if (result) { 5. tutto_ok_procedi(); 6. } else { 7. biasima_utente_e_disconnetti(session_id); 8. } Andrea Zwirner Linkspirit

A4 Rilevazione e prevenzione Verificare che tutti i riferimenti ad oggetto siano indiretti e protetti adeguatamente Mappatura dinamica e limitata alle risorse cui l'utente (o la sessione) ha autorizzazione in lettura 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 stesse regole! Andrea Zwirner Linkspirit 41

A8 Cross-site Request Forgery (CSRF) 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 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 Andrea Zwirner Linkspirit 42

A8 Impatti 43 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 Andrea Zwirner Linkspirit

A8 Esempio 44 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' width='0' height='0'> 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 Andrea Zwirner Linkspirit

A8 Prevenzione 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 funzioni più delicate Ricordarsi di applicare timeout con tempi inversamente proporzionali al livello di autorizzazione degli utenti Andrea Zwirner Linkspirit 45

A8 - Rilevazione 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 Andrea Zwirner Linkspirit 46

47 Sicurezza delle applicazioni web Andrea Zwirner Linkspirit andrea@linkspirit.it @AndreaZwirner Andrea Zwirner Linkspirit

Riferimenti 48 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 spazio cibernetico - 2013 Andrea Zwirner Linkspirit