Innanzitutto, le connessioni websocket sono inizializzate da javascript che viene eseguita dal browser web sul client. Ciò significa che le tipiche connessioni web socket sono le connessioni in uscita, non le connessioni in entrata. Le connessioni web socket in entrata sarebbero possibili solo quando l'host esegue un server web websocket. Solitamente un normale browser non lo fa. E anche se l'host esegue un server Websocket per qualche motivo: un firewall correttamente configurato in una normale rete client, può, dovrebbe e lo impedirà.
In secondo luogo, i websocket non sono normali socket TCP. Usano un protocollo di frammentazione personalizzato su TCP. Ciò significa che una connessione web-socket può essere aperta solo a un servizio che comprende il protocollo websocket. Pertanto, anche se l'API websocket può essere utilizzata per consentire all'utente (provare a) di connettersi a qualsiasi host remoto, non sarà in grado di utilizzare alcun servizio non progettato per l'utilizzo tramite websocket.
In terzo luogo, questa non è una "shell TCP remota", perché la websocket vive solo nel motore javascript del browser web e nel contesto del documento HTML attualmente visitato. Non dà al sito Web l'utente che sta visitando altri diritti per fare cose sul computer locale di quanto non avrebbe già. Certo, dà all'applicazione javascript la capacità di comunicare con i server remoti, ma c'erano già molti modi per farlo, come AJAX.
Quindi quale potenziale di abuso possibile rimane?
Come proprietario di un sito Web malevolo, potrei diffondere un javascript che consente all'utente di connettersi a un server Websocket e svolgere attività dannose su di esso. Potrei usare questo per trasformare i miei visitatori in zombi di spam per inviare spam ad alcune applicazioni basate su websocket da qualcun altro. Ma websocket ha una funzione incorporata per proteggersi da questo. Il browser Web dell'utente invia l'URL del sito Web con ogni connessione websocket. Ciò significa che un servizio può facilmente ignorare qualsiasi connessione che non proviene da un URL conosciuto.
Per ulteriori informazioni, raccomando RFC-6455 che descrive il protocollo stesso e lo standard W3C per l'API Javascript nei browser web.