WebSocket - Sicurezza

Il protocollo dovrebbe essere progettato per motivi di sicurezza. WebSocket è un protocollo nuovo di zecca e non tutti i browser web lo implementano correttamente. Ad esempio, alcuni di essi consentono ancora la combinazione di HTTP e WS, sebbene la specifica implichi il contrario. In questo capitolo, discuteremo alcuni attacchi di sicurezza comuni di cui un utente dovrebbe essere a conoscenza.

Negazione del servizio

Gli attacchi Denial of Service (DoS) tentano di rendere una macchina o una risorsa di rete non disponibile per gli utenti che lo richiedono. Supponiamo che qualcuno effettui un numero infinito di richieste a un server Web con intervalli di tempo minimi o nulli. Il server non è in grado di gestire ogni connessione e smetterà di rispondere o continuerà a rispondere troppo lentamente. Questo può essere definito come attacco Denial of Service.

Il Denial of Service è molto frustrante per gli utenti finali, che non possono nemmeno caricare una pagina web.

L'attacco DoS può anche applicarsi alle comunicazioni peer-to-peer, costringendo i client di una rete P2P a connettersi contemporaneamente al server web della vittima.

Uomo nel mezzo

Cerchiamo di capirlo con l'aiuto di un esempio.

Supponi una persona A sta chattando con il suo amico Btramite un client IM. Una terza persona desidera visualizzare i messaggi che scambi. Quindi, crea connessioni indipendenti con entrambe le persone. Invia anche messaggi alla personaA e il suo amico B, come intermediario invisibile alla tua comunicazione. Questo è noto come attacco man-in-the-middle.

Il tipo di attacco man-in-the-middle è più facile per le connessioni non crittografate, poiché l'intruso può leggere direttamente i pacchetti. Quando la connessione è crittografata, le informazioni devono essere decrittografate dall'aggressore, il che potrebbe essere troppo difficile.

Da un aspetto tecnico, l'attaccante intercetta uno scambio di messaggi a chiave pubblica e invia il messaggio sostituendo la chiave richiesta con la propria. Ovviamente, una solida strategia per rendere difficile il lavoro dell'aggressore è usare SSH con WebSocket.

Soprattutto quando si scambiano dati critici, preferire la connessione protetta WSS invece del WS non crittografato.

XSS

Cross-site scripting (XSS) è una vulnerabilità che consente agli aggressori di inserire script lato client in pagine Web o applicazioni. Un utente malintenzionato può inviare codice HTML o Javascript utilizzando gli hub dell'applicazione e lasciare che questo codice venga eseguito sui computer dei client.

Meccanismi di difesa nativi di WebSocket

Per impostazione predefinita, il protocollo WebSocket è progettato per essere protetto. Nel mondo reale, l'utente potrebbe riscontrare vari problemi che potrebbero verificarsi a causa della scarsa implementazione del browser. Col passare del tempo, i fornitori di browser risolvono immediatamente eventuali problemi.

Un ulteriore livello di sicurezza viene aggiunto quando viene utilizzata una connessione WebSocket sicura su SSH (o TLS).

Nel mondo WebSocket, la preoccupazione principale riguarda le prestazioni di una connessione sicura. Sebbene ci sia ancora un ulteriore livello TLS in cima, il protocollo stesso contiene ottimizzazioni per questo tipo di utilizzo, inoltre, WSS funziona in modo più elegante attraverso i proxy.

Mascheramento da client a server

Ogni messaggio trasmesso tra un server WebSocket e un client WebSocket contiene una chiave specifica, denominata chiave di mascheramento, che consente a qualsiasi intermediario conforme a WebSocket di smascherare e ispezionare il messaggio. Se l'intermediario non è conforme a WebSocket, il messaggio non può essere influenzato. Il browser che implementa il protocollo WebSocket gestisce il mascheramento.

Casella degli strumenti di sicurezza

Infine, possono essere presentati strumenti utili per indagare sul flusso di informazioni tra i client WebSocket e il server, analizzare i dati scambiati e identificare possibili rischi.

Strumenti per sviluppatori del browser

Chrome, Firefox e Opera sono ottimi browser in termini di supporto per gli sviluppatori. I loro strumenti integrati ci aiutano a determinare quasi ogni aspetto delle interazioni e delle risorse lato client. Svolge un ruolo importante per motivi di sicurezza.