UNIVERSITÀ DI PERUGIA DIPARTIMENTO DI MATEMATICA E INFORMATICA Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della.

Slides:



Advertisements
Presentazioni simili
OWASP e le 10 vulnerabilità più critiche delle applicazioni Web
Advertisements

Linux examples of Buffer overflow attacks
Scrivere codice sicuro
ARI sezione di Parma Sito ariparma ARI sezione di Parma.
Convegno di Studi su Internet e Diritto - Milano, 16 e 17 Ottobre 2003 Convegno di Studi su Internet e Diritto - Milano, 16 e 17 Ottobre 2003 Ing. Andrea.
CORSO DI SICUREZZA SU RETI II PROF. A. DE SANTIS ANNO 2006/07 Informatica granata Gruppo 2 ISP Gruppo 3 ISP.
Corso di Fondamenti di Informatica
Elaborazione di Franco Grivet Chin
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità B1 Introduzione alle basi di dati.
JavaScript 1. Per cominciare.
La riduzione dei privilegi in Windows
Corso aggiornamento ASUR10
Le tecnologie informatiche per l'azienda
Gestione dei laboratori Come rendere sicura la navigazione internet e l'uso della rete Lorenzo Nazario.
WebProfessional Web Content Management System
Sicurezza II Prof. Dario Catalano Errori di Implementazione.
Organizzazione di una rete Windows 2003
NESSUS.
Organizzazione di una rete Windows Server Client Il ruolo dei computer I computer in una rete possono svolgere le funzioni di client e server dei.
Anno Accademico Corso di Informatica Informatica per Scienze Biologiche e Biotecnologie Anno Accademico
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Active Server Pages.
UNIVERSITÀ DI PERUGIA DIPARTIMENTO DI MATEMATICA E INFORMATICA Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della.
Architettura Three Tier
UNIVERSITÀ DEGLI STUDI DI BOLOGNA
L’inclusione dei comuni piccoli
Gruppo ISP1 Commessa tuttipunti.org. Sommario Descrizione commessa Organizzazione del lavoro Lavoro svolto Problematiche di sicurezza Impostazioni di.
Progetto Sicurezza 2 Fase di setup Prof. A. De Santis
SSL (Secure Socket Layer)
Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.
Semplice prototipo di Building Automation con una rete Ethernet
APPLICAZIONI WEB In questo corso impareremo a scrivere un'applicazione web (WA) Marco Barbato - Corso di Applicazioni Web – A.A
Ing. Enrico Lecchini BetaTre S.r.l.
La sicurezza può essere fornita in ciascuno degli strati: applicazione, trasporto, rete. Quando la sicurezza è fornita per uno specifico protocollo dello.
Modulo 7 – reti informatiche u.d. 2 (syllabus – )
Guida IIS 6 A cura di Nicola Del Re.
Rossetto Stefano Seminario di Commercio Elettronico
Certificazioni del personale e certificazioni dei sistemi di gestione della sicurezza delle informazioni Limportanza di una corretta impostazione delle.
Server Web in una rete Windows Sommario Meccanismi di accesso remoto Meccanismi di accesso remoto Introduzione ai Server Web Introduzione ai Server.
Corso Drupal 2013 Andrea Dori
Sistemi Informativi sul Web
Introduzione alla programmazione web
Slide 1 Un browser migliore Passa a Firefox – il modo più veloce, sicuro e intelligente per navigare sul Web.
Presentazione Data Base Ovvero: il paradigma LAPM (Linux - Apache - PHP - mySQL) come supporto Open Source ad un piccolo progetto di Data Base relazionale,
Norman SecureBackup Il backup flessibile per le piccole e medie imprese.
ASP – Active Server Pages - 1 -Giuseppe De Pietro Introduzione ASP, acronimo di Active Server Pages, sta ad indicare una tecnologia per lo sviluppo di.
ASP – Active Server Pages Introduzione Pagine Web Statiche & Dinamiche(ASP)
Universita’ degli Studi Roma Tre
Protocolli e architetture per WIS. Web Information Systems (WIS) Un Web Information System (WIS) usa le tecnologie Web per permettere la fruizione di.
Sicurezza nella Sezione INFN di Bologna Franco Brasolin Servizio Calcolo e Reti Sezione INFN di Bologna Riunione Referenti – Bologna 17 Novembre 2003 –
Eprogram informatica V anno. ASP.NET Introduzione ASP.NET (Active Server Page) è il linguaggio che, sfruttando la tecnologia.NET, permette di: -scrivere.
Francesco M. Taurino 1 NESSUS IL Security Scanner.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
UNIVERSITÀ DI PERUGIA DIPARTIMENTO DI MATEMATICA E INFORMATICA Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della.
PiattaformePiattaformePiattaformePiattaforme Antonio Cisternino 28 Gennaio 2005 OpenSourceOpenSourceOpenSourceOpenSource e ProprietarieProprietarieProprietarieProprietarie.
Storo 30 ottobre 2006 – Pierluigi Roberti Problemi legati al software e possibili soluzioni ReadyServices sas Pierluigi Roberti.
Joomlahost.it1 Presentato da Fustini Alessandro Myslq DBA e Developer certified Joomlahost.it.
Comunicazioni. 5.1 POSTA ELETTRONICA 5.1 POSTA ELETTRONICA.
Tecnologie lato Server: i Server Web © 2005 Stefano Clemente I lucidi sono in parte realizzati con materiale tratto dal libro di testo adottato tradotto.
Sicurezza e attacchi informatici
Eprogram informatica V anno.
Cloud SIA V anno.
I FIREWALL. COSA SONO I FIREWALL? LAN MONDO ESTERNO UN FIREWALL E’ UN SISTEMA CHE SUPPORTA UNA POLITICA DI CONTROLLO DEGLI ACCESSI FRA DUE RETI (POLITICHE.
Il bug Heartbleed Molinari Alberto Guglielmini Manuel Sicurezza Informatica - A.A. 2014/15.
Come affrontare la sicurezza Internet quando l’utente è uno studente o un figlio Sergio Venturino School Day Milano, 19 ottobre 2010.
Analisi di sicurezza della postazione PIC operativa
12 dicembre Analisi di sicurezza dell’applicazione SISS Security Assessment dell’applicativo e Reversing del client.
I sistemi operativi Funzioni principali e caratteristiche.
Migrazione a Win2003 Server a cura del Prof. Arturo Folilela.
Programmazione orientata agli Oggetti Introduzione a Java.
PHP HyperText Prepocessor.  Linguaggio di scripting lato server sviluppato per generare pagine web.  Permette ad un sito web di diventare dinamico 
Transcript della presentazione:

UNIVERSITÀ DI PERUGIA DIPARTIMENTO DI MATEMATICA E INFORMATICA Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione Metodologie di Secure Programming Prof. Stefano Bistarelli C Consiglio Nazionale delle Ricerche Iit Istituto di Informatica e Telematica - Pisa Università “G. d’Annunzio” Dipartimento di Scienze, Pescara

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 2 Secure programming ~ defensive programming Design delle applicazioni inteso a garantirne il funzionamento a dispetto di un uso scorretto delle stesse. Idea simile alla progettazione di oggetti che ne garantiscono l’uso corretto  fornelli che lasciano passare gas solo se e’ accesa la fiamma  Prese e spine con versi obbligati Obbiettivo generico di migliorare il codice delle applicazioni:  Qualità (riducendo i bugs)  Rendendolo più comprensivile per la fase di audit (alpha-beta testing)  Renderlo corretto (fa ciò che deve) e completo (fa solo quello!)

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 3 Nothing is assumed! In programmazione difensiva nulla si assume.  TUTTI gli errori devono essere appositamente gestiti: non così  Ancor peggio se errore ma non genero eccezione   Se introduco piu’ di 256 caratteri come input? E perché mai uno dovrebbe inserire una stringa cosi’ lunga? Defensive programming  questo bug non deve esistere!  questo bug dimostra quello che vedremo essere il temibile buffer overflow exploitsbuffer overflowexploits

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 4 Tecniche di programmazione difensiva 1 Ridurre la complessità del codice  Minore possibilità di bugs (e di security problems)  … obfuscation technologies?  (forse la vedremo) Revisione del codice sorgente  Free software  Code audit esterno  Self code audit Fase di test Source code reuse  Attenzione!!!

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 5 Tecniche di programmazione difensiva 2 Input/ouput validation  Code injection!!!   Canonicalization  Tutto il codice è pericoloso  least privilege principle Mai sa o root Mai piu’ permessi dei necessari Tutti i dati sono importanti  E pericolosi (tainted variables!)

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 6 Il nostro corso … Prerequisiti  intuire la logica di un programma scritto in C, C#, ASP, PHP Non è richiesto saper programmare in C, C#, ASP, PHP  Conoscenza interfacce windows e conoscenza di base del sistema unix (linux) Corso difficile … Spero renderlo piu’ semplice possibile …

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 7 Code injection Un film … in inglese!!  TheCodeRoom TheCodeRoom E una discussione …

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 8 Errori del codice Un errore del codice può influire sulla sicurezza del software (in alcuni casi con conseguenze catastrofiche). Ad esempio nel giugno 1996 il satellite europeo Ariane 5 è esploso subito dopo il lancio a causa di un errore nel software; il programma tentò di inserire un numero di 64 bit in uno spazio di 16 bit, provocando un overflow.

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 9 Errori del codice: altri esempi Nel 1998 un bug negli switch Cisco provocò il blocco della rete frame relay Interspan di AT&T che collegava clienti. Nel 1999 il servizio di eBay fu sospeso per 22 ore a causa di errori nel software fornito da Sun Microsystems. Nel 1999 in uno degli script CGI di Hotmail fu scoperto un bug che permetteva di accedere agli account di posta elettronica di altri utenti. Nel 2004 la Microsoft rilascia il Service Pack 2 per Windows XP, dopo pochi giorni vengono scoperti 2 nuovi security bug, uno su Internet Explorer (ver. > 5) ed uno su Outlook Express.

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 10 Errori del codice I difetti di implementazione sono molto più frequenti, e più seri, di quelli di progettazione. Un software sicuro deve essere in grado di funzionare anche in presenza di errori subdoli, appositamente introdotti da un aggressore intelligente e con la chiara intenzione di compromettere la sicurezza del sistema. Il metodo normalmente utilizzato per trovare gli errori casuali è il test della versione beta. Il tempo dedicato a questo test viene sempre più ristretto per esigenze commerciali. Ultimamente la tendenza è quella di far fare il beta testing agli utenti!

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 11 Attacchi basati sugli errori del codice La maggior parte dei problemi di sicurezza dei computer sono una conseguenza della presenza di errori nel software (si pensi ad esempio ai virus). Sfruttando questi bug è possibile, a volte, prendere il controllo del sistema (ad esempio in ambiente Unix eseguire comandi da root). I bug di sicurezza sono molto più difficili da scovare rispetto ai normali bug di funzionamento poichè i primi non si manifestano apertamente, vengono scoperti solo quando qualcuno trova il modo di sfruttarli. Questo è il motivo per cui ottenere un sistema sicuro è molto più difficile che ottenere un sistema privo di bug di funzionamento.

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 12 Attacchi basati sugli errori del codice I bug di sicurezza non sono rilevati normalmente attraverso la procedura di beta testing. Il test di sicurezza di un software richiede molto tempo e deve essere affidato ad un esperto che conosca bene l'argomento (anche se non è detto che ciò sia sufficiente...). Una volta scoperti, i problemi di sicurezza vengono sfruttati finchè qualcuno non trova il modo di risolverli (attraverso il rilascio di patch o service pack). Il lasso di tempo che intercorre tra la pubblicazione di un security bug ed il rilascio della patch è di vitale importanza per la sicurezza di un sistema.

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 13 Attacchi basati sugli errori del codice Ultimamente si è parlato molto di full disclosure ossia della libertà di diffondere liberamente qualsiasi informazione sulla sicurezza di un sistema informatico. Chi scopre un security bug ha il dovere di informare gli autori del sistema per dare loro il tempo di rilasciare le patch o ha il diritto di diffondere pubblicamente la notizia senza nessun avvertimento? Ultimamente la tendenza è quella di pubblicare la notizia del security bug senza troppe specifiche tecniche ed avvisare contemporaneamente l'autore del sistema incriminato. Una volta rilasciate le patch vengono divulgati i dettagli tecnici (ovviamente non tutti seguono queste indicazioni).

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 14 Canali di diffusione dei security bug Dove vengono diffuse le notizie sui security bug? Esistono diversi enti internazionali che si occupano di sicurezza informatica, il più famoso è il CERT Coordination Center che gestisce un archivio di tutti gli advisories sullo sicurezza nella sezione Altre organizzazioni sono il NIST Computer Security Division, che gestisce un database on-line di vulnerabilità, l'IACT Metabase, il FIRST un forum sui problemi legati alla sicurezza, etc. Esistono anche moltissime mailing-list, tra le più famose: bugtraq, full disclosure, sikurezza.org (italiana). In Italia esiste il CLUSIT, Associazione Italiana per la sicurezza informatica fondata dal Dipartimento di Informatica e Comunicazione dell'Università degli Studi di Milano.

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 15 Attacchi basati sugli errori del codice Occorre sottolineare che i bug del software (e quindi i problemi di sicurezza) sono inevitabili. Ogni qual volta un esperto sufficientemente dotato decide di analizzare un programma di protezione, finisce inevitabilmente per trovare qualche errore casuale in grado di compromettere la sicurezza del sistema. Più il software è complesso maggiore è il numero di problemi riscontrati. Ad esempio Windows XP contiene circa 40 milioni di linee di codice, Debian Gnu/Linux 2.2 circa 55 milioni (fonte:

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 16 Onnipresenza degli errori Secondo le stime di Carnegie Mellon University, sono presenti mediamente dai 5 ai 15 bug ogni mille righe di codice. Molti di questi sono piccoli errori e, poichè non influenzano le prestazioni, non vengono mai notati. Tuttavia, ognuno di questi bug potrebbe, in teoria, compromettere la sicurezza del sistema. Ad esempio su 55 milioni di linee di codice (Gnu/Linux) queste stime indicano la presenza di un numero di bug variabile da 275'000 a 825'000! L'unico modo per migliorare la sicurezza di un sistema è il continuo aggiornamento. Secondo alcune stime, il 99% di tutti gli attacchi sferrati attraverso Internet sarebbero stati evitati se gli amministratori avessero usato le versioni più aggiornate del software installato nei loro sistemi. (fonte: Bruce Schneier)

UNIVERSITÀ DI PERUGIA DIPARTIMENTO DI MATEMATICA E INFORMATICA Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione Progetto OWASP le 10 vulnerabilità più critiche delle applicazioni Web

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 18 Web Application Web Application Security e OWASP Top 10 Il progetto OWASP Le dieci vulnerabiltà più comuni: OWASP Top10 Meccanismi di autenticazione non adeguati Crash del servizio: Buffer overflow Furto di credenziali di autenticazioni: Cross Site Scripting Manipolazione dei dati aziendali: SQL Injection Furto di identità: Errata gestione delle sessioni

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 19 Web Application Security // Trend  Sempre più aziende sono on-line  Sempre più utenti sono on-line: everyone, everywhere, everytime // Conseguenze New Business New security risk: confidential data, thief of identity // Quali problemi? Why good people write bad code -Graff e van Wyk in “Writing secure code” No sviluppo “sicuro” degli applicativi web Firewall and SSL non sono soluzioni di sicurezza completi Fonte:

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 20 Misure tradizionali e incidenti di sicurezza Gli Incidenti di sicurezza coinvolgono aziende che utilizzano:  Firewall: dal momento in cui sia consentito il protocollo HTTP in ingresso sul web server, un attaccante puo’ inserire qualsiasi informazione nelle richieste  IDS: sono facilmente bypassati a livello HTTP non bloccano un attacco ma lo segnalano solamente non possono fare nulla contro una richiesta cifrata non sono in grado di rilevare nuovi attacchi  VPN: realizzano reti virtuali tra ambienti eterogenei garantendo riservatezza e autenticazione tra i due peer.  AV: analizzano file ed per vedere se sono stati colpiti da nuovi virus; non sono rilevanti per quanto riguarda l’HTTP 75% incidenti avviene via HTTP Encryption transport layer (SSL) + FW non risolvono il problema di sviluppare un applicativo web “sicuro”

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 21 Concetti di WebAppSec  Canale e protocollo di comunicazione: HTTP layer 7 ISO/OSI, SSL layer 4-5  Server: Sviluppo applicativi web “sicuri” DataBase Accept from ANY to IP W.S. via HTTP/HTTPS Transport layer HTTP/HTTPS over TCP/IP Allow SQL Plugins: Perl C/C++ JSP, etc Database connection: ADO, ODBC, etc. SQL Database Apache IIS Netscape etc… Web server Richiesta HTTP request (cleartext or SSL) Risposta HTTP reply (HTML, Javascript, VBscript, etc) App. server

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 22 Principali progetti OWASP Linee guida:  Guida per la progettazione di applicativi web “sicuri”  OWASP Top Ten Vulnerability  Checklist per Web Application Vulnerability Assessment Tool per Pentester e code reviewer:  WebScarab  WebGoat

Master di I° livello in Sistemi e Tecnologie per la sicurezza dell'Informazione e della Comunicazione S. Bistarelli - Metodologie di Secure Programming 23 Top Ten vulnerability list OWASP mantiene una lista delle 10 vulnerabilità più critiche di un applicativo web. Aggiornate annualmente. Sempre più accettata come standard:  Federal Trade Commission (US Gov)  Oracle  Foundstone Inc. Stake  VISA, MasterCard, American Express Tradotta in italiano: A1. Unvalidated Input A2. Broken Access Control A3. Broken Authentication and Session Management A4. Cross Site Scripting (XSS) Flaws A5. Buffer Overflow A6. Injection Flaws A7. Improper Error Handling A8. Insecure Storage A9. Denial of Service A10. Insecure Configuration Management