giovedì 23 maggio 2013

Form delle credenziali su HTTP


Nella lezione di ieri abbiamo descritto HTTPS, il protocollo utilizzato comunemente per accedere a servizi autenticati (GMail, Facebook, banche, acquisti on line, etc).

Abbiamo evidenziato che di norma il web server espone il form nel quale inserire le credenziali attraverso HTTPS. Ciò sembra inutile, in quanto non c'è nessun vantaggio nell'imporre che la richiesta di prelievo del form e lo stesso form viaggino con garanzia di riservatezza. La riservatezza è necessaria solo per la richiesta inviata subito dopo avere prelevato il form, cioè per la richiesta che contiene le credenziali. Questa slide sintetizza il motivo per il quale prelevare il form su HTTPS sembra inutile ma non lo è:


Secondo molti esperti, nel 2011 il governo della Tunisia ha forzato tutti gli Internet provider del paese a modificare i form esposti su HTTP dai servizi "importanti" (GMail, Facebook etc). Nelle pagine contenenti i form venivano aggiunte, durante il transito dal server al browser, un paio di linee Javascript. Questo codice, eseguito sul browser durante la visualizzazione della pagina contenente il form, prelevava le credenziali inserite dall'utente e le inviava ad una locazione scelta dall'attaccante (ometto alcuni dettagli tecnici irrilevanti su questo punto).

Questo è un esempio lampante di cosa può accadere quando i form sono esposti su HTTP e non su HTTPS: l'integrità dei messaggi non è garantita, ergo possono essere modificati in transito senza che il destinatario se ne accorga.

I dettagli sono indicati qui: Tunisian government harvesting usernames and passwords

Ho scoperto questo aneddoto, che non conoscevo, perché proprio stamani mattina mi sono imbattuto su un articolo che discute questo aspetto specifico in dettaglio:

Your login form posts to HTTPS, but you blew it when you loaded it over HTTP

(per inciso, già altre volte mi è capitato di avere una sorta di sfera di cristallo per prevedere il futuro: agli studenti dico una cosa che potrebbe accadere, probabilmente loro pensano che sono paranoico o fissato, e dopo qualche giorno quella cosa si verifica davvero; riporto un paio di esempi in coda a questo post).

Non è semplicissimo da leggere ma ha alcuni punti molto chiari, proprio sugli aspetti evidenziati ieri:
  • Loading login forms over HTTP renders any transport layer security almost entirely useless.
  • What people forget about SSL is that it’s not about encryption. Well that’s one feature of secure sockets, another really essential one is integrity insofar as it gives us confidence that the website content hasn’t been manipulated. Anything you load over an HTTP connection can be easily changed by a man in the middle which is why it’s absolutely essential to load those login forms over a secure connection.
L'articolo mostra anche esempi di siti molto importanti che NON espongono il form delle credenziali su HTTPS (e quindi sono fatti male).

Sfera di cristallo (esempi di mia previsione del futuro):


Posta un commento