# Firesheep

Firesheep, nell'ambito della sicurezza informatica, è un'estensione libera per Mozilla Firefox che permette di effettuare session hijacking.
L'estensione è stata concepita come proof of concept per dimostrare la vulnerabilità dei server web che non cifrano completamente (o non cifrano affatto) il traffico di un'intera sessione fra login e logout in un sito web.

## Caratteristiche

Firesheep utilizza un packet sniffer (letteralmente un annusa pacchetti) per intercettare i pacchetti HTTP che viaggiano attraverso la propria scheda di rete, in particolar modo vengono intercettati i pacchetti che non utilizzano HTTPS, in quanto sono trasmessi in chiaro. Quando si ottiene un pacchetto in chiaro, se tale pacchetto trasmette dei cookie, l'attacco informatico si conclude con la possibilità di impossessarsi della sessione della vittima.
Di fatto è possibile navigare come se si fosse assunto l'identità della vittima.

## Contromisure
### Risoluzione

Mettere i visitatori nella posizione di poter effettuare connessioni sicure, per ovvi motivi legati alla privacy, dovrebbe essere un prerequisito se il sito web prevede processi di autenticazione, come login, etc. Bisogna però considerare che solo con l'avvento di certificate authority come Let's Encrypt questa è divenuta una soluzione concretamente adottabile, soprattutto per quanto riguarda i server web medio-piccoli.
Una volta aggiunto il supporto all'HTTPS, preferibilmente in maniera predefinita, è altrettanto essenziale che il server web adotti tale protocollo per l'intera durata della navigazione che intercorre fra login e logout.
Per evitare eccezioni, il server web può adottare politiche più rigide. Vi è la politica HTTP Strict Transport Security che forza il browser web a mantenersi in HTTPS per l'intera durata della navigazione, prevenendo altri potenziali attacchi informatici quali l'SSL stripping.

### Prevenzione

Come dimostrano software come Firesheep, vi sono attacchi informatici che si rivelano particolarmente efficaci se provenienti dalla propria rete locale, ed è soltanto ideale il concetto che la totalità dei server web di Internet implementino rigide politiche HTTPS. Il rischio potenziale aumenta, più aumentano le persone che possono intercettare i pacchetti. L'utente è ad esempio particolarmente esposto nel caso di access point pubblicamente trafficati.
Per proteggere la propria navigazione, è possibile fruire di protocolli come:
* SOCKS attraverso tunnel SSH
* Virtual Private Network (VPN)
Si tratta di protocolli che permettono di comunicare in modo sicuro per lo meno nel tragitto fra il proprio dispositivo fino ad un nodo in Internet di fiducia, il quale si occuperà al posto nostro di effettuare le connessioni durante la navigazione in una rete locale potenzialmente inaffidabile. Prendendo comunque atto che questi mezzi non possono proteggere i pacchetti che intercorrono fra il nodo di fiducia e la destinazione.
Ci sono anche componenti aggiuntivi per browser web, come HTTPS Everywhere, che attuano in maniera predefinita l'HTTP Strict Transport Security, anche se il web server non lo richiede. Prendendo comunque atto che questi strumenti non proteggono i pacchetti se il server web ignora totalmente il supporto ad HTTPS.
In aggiunta, c'è chi attua l'always logged off, ovvero scollegarsi dalle applicazioni web (online banking, etc.) per non mantenere la sessione aperta quando non si sta fruendo del servizio.

## Diffusione

Vi è un'applicazione freemium analoga per Android chiamata FaceNiff.