usando html5 websockets para evitar la política TCP del firewall

2

He leído que html5 permite abrir sockets TCP desde el lado del cliente en su función "websocket".

Los cortafuegos que recuerdo pueden estar configurados para bloquear las conexiones TCP iniciadas desde "el exterior" al buscar paquetes SYN, pero el uso de esta función html5 permite un desvío simplista a esta política.

¿Me estoy perdiendo algo aquí? ¿Quién monitoreará esas llamadas implícitas de socket abierto? Parece que este comportamiento es un "shell tcp inverso" servido gratis ...

    
pregunta GalB1t 01.04.2015 - 07:58
fuente

2 respuestas

4

Primero, las conexiones de websocket se inicializan desde javascript, que se ejecuta mediante el navegador web en el cliente. Eso significa que las conexiones típicas de websocket son conexiones salientes, no conexiones entrantes. Las conexiones entrantes de websocket solo serían posibles cuando el host ejecute un servidor websocket . Un navegador normal no suele hacer esto. E incluso cuando el host ejecuta un servidor websocket por algún motivo: un firewall configurado correctamente en una red de cliente habitual puede, debería y evitará esto.

En segundo lugar, los websockets no son sockets TCP normales. Utilizan un protocolo de trama personalizado en la parte superior de TCP. Eso significa que una conexión websocket solo se puede abrir a un servicio que entienda el protocolo websocket. Por lo tanto, aunque la API de websocket se puede usar para hacer que el usuario se conecte a cualquier host remoto, no podrá hacer que use ningún servicio que no esté diseñado para ser utilizado a través de websockets.

En tercer lugar, esto no es un "shell TCP remoto", porque el websocket solo reside en el motor javascript del navegador web y en el contexto del documento HTML actualmente visitado. No le da al sitio web que el usuario visita más derechos para hacer cosas en la máquina local de lo que ya no tenía. Claro, le da a la aplicación javascript la capacidad de comunicarse con servidores remotos, pero ya había muchas formas de hacerlo, como AJAX.

Entonces, ¿qué potencial de abuso queda?

Como propietario de un sitio web malicioso, podría propagar un javascript que haga que el usuario se conecte a un servidor websocket y realice alguna actividad maliciosa en él. Podría usar esto para convertir a mis visitantes en zombis de correo no deseado para hacer correo no deseado alguna aplicación basada en websocket por otra persona. Pero websocket tiene una función incorporada para protegerse contra esto. El navegador web de los usuarios envía la URL del sitio web con cada conexión de websocket. Eso significa que un servicio puede ignorar fácilmente cualquier conexión que no se origine en una URL conocida.

Para más información, recomiendo el RFC-6455 que describe el protocolo en sí y el estándar W3C para la API de Javascript en los navegadores web.

    
respondido por el Philipp 01.04.2015 - 15:00
fuente
2

Los WebSockets no son sockets TCP simples, pero ofrecen un comportamiento similar a los sockets TCP dentro de un túnel HTTP. Para usarlos realmente para conectarse a puertos arbitrarios, debe tener algún back-end del lado del servidor que haga conexiones TCP "reales" al puerto solicitado desde el WebSocket.

Aparte de eso, esta pregunta se hace mejor en security.stackexchange.com.

    
respondido por el Steffen Ullrich 01.04.2015 - 08:33
fuente

Lea otras preguntas en las etiquetas