Programmazione Sicura - Introduzione - UNISA
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Docente Barbara Masucci Ø http://www.di.unisa.it/professori/masucci Ø bmasucci@unisa.it Ø studio 43, quarto piano, stecca 7 Ø Dipartimento di Informatica Orario ricevimento (a partire da Marzo) Ø Lunedì: 14:00 – 15:00 Ø Martedì: 11:00 – 13:00
Informazioni sul corso ØDurata: 48 ore (6 CFU) ØOrario lezioni: Ø Lunedì: 11:00 – 13:00, aula P6 Ø Martedì: 9:00 – 11:00, aula P6 ØHome-page del corso: Ø http://www.di.unisa.it/professori/masucci/ ProgrammazioneSicura1718
Testi di riferimento David Wheeler Secure Programming HOWTO Creating Secure Software https://www.dwheeler.com/secure-programs/ Michael Howard, David LeBlanc Writing Secure Code: Practical Strategies and Proven Techniques for Building Secure Applications in a Networked World
Esami L'esame prevede una prova orale Sono previsti sei appelli (+ due straordinari), di cui: Ø Tre appelli nel periodo 11 Giugno 2018 - 31 Luglio 2018 Ø Preappello: nel periodo 11 Giugno - 22 Giugno Ø Primo appello: nel periodo 25 Giugno – 6 Luglio Ø Secondo appello: nel periodo 9 Luglio – 31 Luglio Ø Un appello nel periodo 3 Settembre 2018 - 14 Settembre2018 Ø Due appelli nel periodo Gennaio – Febbraio 2019
Scopo del corso ØPerché siamo interessati alla sicurezza dei programmi? Ø Essendo i programmi residenti su computer connessi in rete, essi sono oggetto di continui attacchi Ø Lo sviluppo di patch per risolvere problemi di sicurezza non è uno strumento efficace ØSpesso un nuovo attacco viene messo a punto non appena una nuova patch viene rilasciata, rendendola vana Ø L’utilizzo di sistemi proattivi per la sicurezza (tipo firewall) spesso non è abbastanza
Programmi insicuri ØL’utilizzo di programmi insicuri può comportare Ø Il rilascio di informazioni confidenziali Ø La violazione dell’integrità dei dati Ø L’inutilizzabilità di un servizio ØTutto ciò si traduce in perdita di Ø Denaro Ø Tempo Ø Reputazione Ø Vite umane
Programmi insicuri ØPerché gli sviluppatori scrivono programmi insicuri? Ø Quasi sempre mancano loro le informazioni necessarie Ø Esistono pochi corsi, di tipo specialistico, focalizzati sulla problematica Ø Non pensano che i loro programmi potrebbero essere oggetto di attacco Ø Non tendono ad imparare dagli errori degli altri Ø Molte vulnerabilità sono state causate dagli stessi errori per più di 40 anni! Ø Hanno la certezza che i committenti non saranno in grado di valutare la sicurezza dei programmi loro commissionati
Scopo del corso ØFornire un insieme di linee guida per scrivere programmi sicuri Ø Cosa si intende per programma sicuro? ØLe linee guida sono sviluppate come insieme di lezioni apprese dalla storia e riguardano Ø Diversi linguaggi di programmazione, tra cui C, C++, Java, Perl, PHP, Python Ø Diversi sistemi operativi, con particolare enfasi sui sistemi Unix-like
Programmi sicuri ØLo sviluppo di software sicuro richiede attenzione durante tutto il ciclo di vita del software Source: “Improving Security Across the Software Development Lifecycle – Task Force Report”, April 1, 2004. http://www.cyberpartnership.org/init.html; based on Gary McGraw 2004, IEEE Security and Privacy. ØIn questo corso ci occuperemo in particolare delle fasi di progettazione (design) e implementazione (code)
Programma del corso Ø Introduzione Ø Cenni storici Ø Terminologia, obiettivi e tipi di attacchi Ø Vulnerabilità e debolezze Ø Panoramica sulle caratteristiche di sicurezza dei sistemi Unix-like Ø Gestione del controllo degli accessi Ø Esecuzione con privilegi elevati Ø Linee guida per lo sviluppo di applicazioni sicure Ø Validazione degli input Ø Eliminazione di attacchi tipo Buffer overflow Ø Utilizzo consapevole di chiamata ad altre risorse Ø Controllo dell’output ed utilizzo di librerie non obsolete Ø Utilizzo di strumenti per l'analisi del software
Sicurezza: obiettivi Ø Confidenzialità Ø Autenticazione Ø Non-ripudio Ø Controllo Accessi Ø Integrità Ø Anonimia Ø Disponibilità Risorse
Confidenzialità Privacy, Segretezza trasmesse Informazioni memorizzate sono accessibili in lettura solo da chi è autorizzato
Autenticazione messaggi entità tempo (Identificazione) (Timestamp)
Non-ripudio Chi invia Chi riceve non può negare la trasmissione del messaggio
Controllo Accessi Accesso alle informazioni controllato da o per il sistema
Integrità Solo chi è autorizzato può modificare l’attività di un sistema o le informazioni trasmesse modifica = scrittura, cambiamenti, cancellazione, creazione, ritardi, replay e riordino di messaggi, …
Anonimia Protezione dell’identità o del servizio utilizzato
Disponibilità Risorse Risorse disponibili a chi è autorizzato quando necessario Diverse attese: Ø Presenza di oggetti e servizi utilizzabili Ø Capacità di soddisfare le richieste di servizi Ø Adeguato tempo del servizio
Tipi di Attacchi Attacco Ø Qualsiasi tipo di attività mirata a collezionare, alterare, distruggere informazione o impedirne l’utilizzo Tipi di attacco Ø Passivi: non alterano i dati in transito Ø Intercettazione e analisi del traffico Ø Attivi: modificano il flusso di dati o creano un falso flusso Ø Mascheramento, riproduzione, modifica dei messaggi Ø Denial of service
Tipi di attaccanti Ø Esistono diversi tipi di attaccanti, con diverse motivazioni Ø Criminali / Terroristi (motivazione: economica) Ø Agenzie governative (motivazione: politica) Ø Cracker (motivazione: sfida intellettuale / piacere)
Hacker Steven Levy Hackers: Heroes of the Computer Revolution Ø Tipo positivo, studente di MIT o Stanford Ø Ideale: rendere la tecnologia accessibile a tutti Ø Risolvere i problemi e creare soluzioni Più recentemente, nei media: Ø Tipo negativo Ø Sfrutta buchi di sicurezza
Hacker (tipo positivo) Ø Una persona che ama esplorare i dettagli dei sistemi informatici e i modi con cui estenderne le capacità, contrariamente alla maggioranza degli utenti, che impara solo lo stretto necessario. Ø Chi programma con entusiasmo o che preferisce programmare piuttosto che disquisire sulla programmazione. Guy L. Steele, et al., The Hacker's Dictionary
Hacker classificazione Cracker: programmatori specializzati nell’infrangere sistemi di sicurezza per sottrarre o distruggere dati Script Kiddie: cracker che adoperano script scritti da altri, non essendo in grado di produrli da sè Phracher: rubano programmi che offrono servizi telefonici gratuiti o penetrano computer e database di società telefoniche Phreaker: utilizzano informazioni telefoniche (numeri telefoni, carte telefoniche,…) per accedere ad altri computer
Hacker classificazione Black hat: hacker “cattivo”, che sfrutta la propria abilità per delinquere White hat: hacker che si ritiene moralmente e legalmente integerrimo Grey hat: una via di mezzo tra white e black hat Termini coniati nel 1996, in occasione della prima conferenza Black Hat Briefings, a Las Vegas
Tipi di incidenti Ø Probing e scanning Ø Attacchi alle password Ø Intercettazione di pacchetti (packet sniffing) Ø Compromissione di account (privilegiati e non) Ø Denial of Service Ø Codice malizioso (Virus, Worm, Trojan horse)
Comunicazione Ø Ci sono newsgroup, pubblicazioni, conferenze sulle ultime tecniche di attacco Ø Esempio: CdC (Cult of the Dead Cow), 1984, Texas Ø Conoscenza condivisa su: sistemi mal configurati, usati per scambio di: Ø software pirata Ø numeri di carte di credito Ø strumenti facili da utilizzare Ø identità dei siti compromessi (inclusi account e password)
Tools Package Ø Mantenuti da programmatori competenti, includono anche versione e documentazione Ø Possono contenere: Ø Network Scanner Ø Tool per password cracking e grandi dizionari Ø Packet Sniffer Ø Virus, Trojan horse, programmi e librerie Ø Tool per la modifica selettiva dei file di log del sistema
La storia insegna “If history repeats itself, and the unexpected always happens, how incapable must Man be of learning from experience” George Bernard Shaw (1856 – 1950) Scrittore, drammaturgo, linguista, critico musicale Ø Vediamo alcuni esempi di incidenti che si sono ripetuti negli anni Ø Ciascun incidente mette in luce una vulnerabilità e ha comportato conseguenze di tipo diverso
War dialing Ø Nel 1963 viene descritta nel giornale degli studenti del MIT una intrusione nel sistema PDP-1 di Harward ØWar dialing: scansione di una lista di numeri telefonici, alla ricerca dei numeri telefonici di altri calcolatori ØConseguenza: bolletta astronomica per Harward
Phone Phreaking Ø Nel 1971 John Draper ØScopre che un fischietto giocattolo contenuto nelle scatole di cereali Captain Cruch riproduce una frequenza che consente di effettuare telefonate gratis ØCrea una Blue Box per il phone phreaking e in seguito viene arrestato
Virus Ø Nel 1981 Richard Skrenta crea il primo virus a larga diffusione: Elk Cloner ØIl programma si diffonde tramite floppy disk ed infetta il sistema operativo Apple II ØAttaccato ad un gioco, si attiva alla sua 50esima esecuzione e mostra un messaggio a video Ø Il termine “virus” viene introdotto più tardi Ø Fred Cohen, Computer Viruses: Theory and Experiments, 1984
Anti Virus Ø Nel 1987 viene proposta la prima procedura per la rimozione di un virus e di conseguenza il primo antivirus ØNel 1991 viene rilasciato F-PROT, il primo prototipo di antivirus moderno basato sulla rilevazione delle firme (signature)
Il worm di Morris ØIl 2 Novembre 1988 Internet viene colpita dal Worm di Morris, uno studente della Cornell University Ø Il worm sfrutta bug del sistema operativo Unix per penetrare negli host attraverso la rete Ø In una sola ora rende inutilizzatili i computer di molti centri di ricerca, sovraccaricandoli con molteplici copie di sé stesso Ø Per bloccare il worm viene formato un team di esperti
CERT Computer Emergency Response Team Team di esperti nell’ambito della sicurezza Ø Creato dal DARPA (Defense Advanced Research Projects Agency) in seguito all’attacco del worm Si occupa di Ø Identificare il tipo di incidenti Ø Quantificare le perdite economiche Ø Analizzare le vulnerabilità dei prodotti
Ransomware Ø Nel 1989 viene rilasciato AIDS, il primo ransomware della storia Ø Chiede un riscatto per il ripristino del PC infetto
Virus polimorfico Ø Nel 1992 viene rilasciato 1260, il primo virus polimorfico Ø Il virus si riproduce cifrando il suo codice con una chiave diversa ogni volta Ø La chiave è conservata nel virus e serve per decifrare il codice Ø In tal modo la ricerca di signature note da parte degli antivirus è vana
Macro Virus Ø Nel 1999 viene rilasciato Melissa, il primo macro virus Ø Scritto come macro di applicazioni utente Ø Macro: insieme di istruzioni usate per automatizzare compiti Ø L’autore, David L. Smith, viene condannato a 10 anni di reclusione e a un multa di 5000 dollari
Botnet Ø Nel 2004 Jeanson James Ancheta costruisce la prima botnet Ø Insieme di dispositivi connessi ad Internet (controllati solitamente da un operatore maligno) che svolgono operazioni illegali Ø Arrestato dall’FBI nel 2006, viene condannato a 5 anni di carcere
DDOS Ø Nel 2007 l’Estonia subisce una serie di attacchi tramite Internet Ø Gli attacchi, di tipologia Distributed Denial Of Service, colpiscono diversi obiettivi ØSiti istituzionali ØBanche ØTelevisioni ØGiornali
Phishing Ø Nel 2007 viene violato un sito interno al Pentagono Ø La tecnica utilizzata (phishing) consiste nell’indurre le vittime a Ø rivelare i propri dati confidenziali Ø installare software malizioso
Password Leakage Ø Nel 2012 la rete sociale LinkedIn viene violata da parte di cybercriminali russi ØTrafugati 2,5 milioni di password degli utenti Ø Gli utenti lanciano una class action e ottengono un risarcimento globale di 1.25 milioni di dollari
Datagate Ø Nel 2013 un dipendente della NSA, Edward Snowden, trafuga e rende pubbliche migliaia di informazioni confidenziali della NSA ØIn particolare, dettagli di diversi programmi di sorveglianza di massa del governo statunitense e britannico Ø Accusato di spionaggio e furto di proprietà governative, fugge in Russia, dove attualmente si nasconde Ø Il caso Snowden ha messo in imbarazzo gli USA davanti al mondo intero
Data Leakage Ø Nel 2015 il sito di incontri online Ashley Madison viene violato Ø Il sito si rivolge a utenti sposati, promuovendo l’adulterio Ø Gli attaccanti rivelano 2,5GB di dati, comprese le credenziali degli utenti Ø Diversi utenti si suicidano
E-mail Leakage Ø Nel 2016 Wikileaks pubblica 19252 e-mail di persone affiliate al DNC (partito democratico negli USA) Ø Contenuti Ø Interazioni del DNC con i media Ø Campagne di Clinton/Sanders Ø Finanziamenti Ø Informazioni sensibili Ø Di conseguenza, 4 dirigenti del DNC si dimettono
Eye Pyramid Ø Nel 2017 i due fratelli Giulio e Francesca Maria Occhionero vengono accusati di spionaggio Ø Uso del software Eye Pyramid per monitorare dispositivi di politici, imprenditori, istituzioni e pubbliche amministrazioni
Lezioni apprese ØIl termine “hacking” ha cambiato radicalmente significato nel tempo Ø Da desiderio di manifestare la propria superiorità a complesso insieme di attività per ottenere un vantaggio economico o politico ØL’hacking in stile black hat finisce quasi sempre nello stesso modo Ø Una denuncia, un processo, una condanna penale ØBisogna imparare a difendersi Ø Per farlo, è necessario capire come avvengono gli attacchi
Lezioni apprese ØDifendersi è più complesso rispetto ad attaccare Ø All’attaccante può bastare una singolo falla, ma il difensore deve individuare tutte le falle e ripararle Ø L’attaccante può scegliere metodi e obiettivo dell’attacco, mentre il difensore deve adattarsi all’attaccante Ø L’attaccante spesso è visto come un eroe se ha successo, mentre il difensore è visto come un perdente se fallisce Ø L’attaccante conosce bene gli strumenti che usa, mentre il difensore può scontrarsi con tecniche mai viste prima
Lezioni apprese ØGli obiettivi di un attaccante sono molteplici Ø Un apparato hardware Ø Un software (sistema operativo, libreria, applicazione) Ø Una procedura/algoritmo Ø Una persona ØIl programmatore deve considerare minacce e obiettivi in tutto il ciclo di vita del software
Lezioni apprese ØLa storia si ripete Ø Gli errori commessi sono quasi sempre gli stessi Ø Le risposte agli incidenti sono quasi sempre le stesse ØIl programmatore ha a sua disposizione una grande arma: la storia... che gli insegna quello che NON deve fare
Puoi anche leggere