Programmazione Sicura - Introduzione - UNISA

Pagina creata da Erica Durante
 
CONTINUA A LEGGERE
Programmazione Sicura - Introduzione - UNISA
Programmazione
     Sicura
                    Introduzione

  Barbara Masucci
Programmazione Sicura - Introduzione - UNISA
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
Programmazione Sicura - Introduzione - UNISA
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
Programmazione Sicura - Introduzione - UNISA
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
Programmazione Sicura - Introduzione - UNISA
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
Programmazione Sicura - Introduzione - UNISA
Ed ora …
qualcosa sui
contenuti
Programmazione Sicura - Introduzione - UNISA
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
Programmazione Sicura - Introduzione - UNISA
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
Programmazione Sicura - Introduzione - UNISA
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
Programmazione Sicura - Introduzione - UNISA
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