mercoledì 18 maggio 2016

SSL / HTTPS: (esempio di) cosa non garantisce

Nella lezione di "reti di calcolatori" di ieri mi sono reso conto che devo insistere maggiormente per sottolineare un aspetto di SSL (quindi di HTTPS) che a me pareva banale ma che evidentemente banale non è.

SSL fornisce garanzie di sicurezza (autenticazione, integrità, riservatezza) tra le due estremità della connessione TCP. Fornisce cioè garanzie relative allo spostamento di dati tra un punto ed un altro.

SSL non fornisce nessunissima garanzia di sicurezza "nei calcolatori" alle due estremità della connessione.

Esempio semplicissimo: un attaccante può modificare un documento statico sul server; oppure può modificare i programmi sul server che generano i documenti dinamici. SSL continua a fornire le proprie garanzie: i dati sono autentici, riservati ed integri da una estremità all'altra della connessione. Ma i dati che viaggiano nella connessione non sono quelli che il server "avrebbe voluto inviare".

Da un altro punto di vista, il dato sul server prima viaggia dalla sua "origine ideale associata al vero subject" fino alla estremità della connessione; poi viene inserito nella connessione. La prima parte del viaggio non ha garanzie di autenticazione e integrità; la seconda ha garanzie di autenticazione, integrità e riservatezza. SSL opera sulla seconda parte del viaggio, non sulla prima.

Attaccare la prima parte del viaggio può essere facile o difficile per l'attaccante, la cosa fondamentale è che SSL non ha nulla a che vedere con questo problema. Nulla. Non lo rende più difficile per l'attaccante. Non fornisce al client nessun elemento per accorgersi della intrusione.

Il ragionamento si applica in modo identico al lato client. Il dato effettua un viaggio in due parti: tra browser ed estremità client della connessione; tra estremità client della connessione ed estremità server. SSL non fornisce nessuna garanzia sulla prima parte del viaggio.

Gli attacchi alla prima parte del viaggio sul lato client si chiamano "Man-In-The-Browser (MITB)". Il nome evidenzia che l'attaccante si trova virtualmente all'interno del browser ed ha accesso a tutte le comunicazioni tra client e server (e per analogia con gli attacchi "Man--In-The-Middle (MITM)" in cui l'attaccante si trova nella internetwork).

Gli attacchi MITB sono terribili perché l'utente vede le pagine inviate dal server, vede il lucchetto che descrive il certificato inviato dal server...ma il browser non fa quello che deve fare; fa quello che decide l'attaccante. SSL è del tutto inutile: fornisce garanzie tra le due estremità della connessione, ma l'attaccante opera esternamente alla connessione.


Posta un commento