WebSockets - Seguridad

El protocolo debe diseñarse por razones de seguridad. WebSocket es un protocolo completamente nuevo y no todos los navegadores web lo implementan correctamente. Por ejemplo, algunos de ellos todavía permiten la combinación de HTTP y WS, aunque la especificación implica lo contrario. En este capítulo, analizaremos algunos ataques de seguridad comunes que un usuario debe conocer.

Negación de servicio

Los ataques de denegación de servicio (DoS) intentan hacer que una máquina o un recurso de red no estén disponibles para los usuarios que lo solicitan. Supongamos que alguien realiza un número infinito de solicitudes a un servidor web con intervalos de tiempo pequeños o nulos. El servidor no puede manejar cada conexión y dejará de responder o seguirá respondiendo con demasiada lentitud. Esto se puede denominar ataque de denegación de servicio.

La denegación de servicio es muy frustrante para los usuarios finales, que ni siquiera podían cargar una página web.

El ataque DoS puede incluso aplicarse a las comunicaciones de igual a igual, lo que obliga a los clientes de una red P2P a conectarse simultáneamente al servidor web de la víctima.

Hombre en el medio

Entendamos esto con la ayuda de un ejemplo.

Supongamos que una persona A esta charlando con su amigo Ba través de un cliente de mensajería instantánea. Alguna tercera persona quiere ver los mensajes que intercambias. Entonces, hace conexiones independientes con ambas personas. También envía mensajes a la personaA y su amigo B, como un intermediario invisible para su comunicación. Esto se conoce como ataque man-in-the-middle.

El tipo de ataque man-in-the-middle es más fácil para las conexiones no cifradas, ya que el intruso puede leer los paquetes directamente. Cuando la conexión está cifrada, el atacante tiene que descifrar la información, lo que puede resultar demasiado difícil.

Desde un punto de vista técnico, el atacante intercepta un intercambio de mensajes de clave pública y envía el mensaje mientras reemplaza la clave solicitada por la suya. Obviamente, una estrategia sólida para dificultar el trabajo del atacante es usar SSH con WebSockets.

Principalmente, cuando intercambie datos críticos, prefiera la conexión segura de WSS en lugar de WS sin cifrar.

XSS

La secuencia de comandos entre sitios (XSS) es una vulnerabilidad que permite a los atacantes inyectar secuencias de comandos del lado del cliente en páginas web o aplicaciones. Un atacante puede enviar código HTML o Javascript utilizando los concentradores de su aplicación y permitir que este código se ejecute en las máquinas de los clientes.

Mecanismos de defensa nativos de WebSocket

De forma predeterminada, el protocolo WebSocket está diseñado para ser seguro. En el mundo real, el usuario puede encontrar varios problemas que pueden ocurrir debido a una mala implementación del navegador. A medida que pasa el tiempo, los proveedores de navegadores solucionan cualquier problema de inmediato.

Se agrega una capa adicional de seguridad cuando se usa una conexión segura WebSocket a través de SSH (o TLS).

En el mundo de WebSocket, la principal preocupación es el rendimiento de una conexión segura. Aunque todavía hay una capa TLS adicional en la parte superior, el protocolo en sí contiene optimizaciones para este tipo de uso, además, WSS funciona de manera más elegante a través de proxies.

Enmascaramiento de cliente a servidor

Cada mensaje transmitido entre un servidor WebSocket y un cliente WebSocket contiene una clave específica, denominada clave de enmascaramiento, que permite a cualquier intermediario compatible con WebSocket desenmascarar e inspeccionar el mensaje. Si el intermediario no es compatible con WebSocket, el mensaje no se verá afectado. El navegador que implementa el protocolo WebSocket maneja el enmascaramiento.

Caja de herramientas de seguridad

Finalmente, se pueden presentar herramientas útiles para investigar el flujo de información entre sus clientes y servidor WebSocket, analizar los datos intercambiados e identificar posibles riesgos.

Herramientas para desarrolladores de navegadores

Chrome, Firefox y Opera son excelentes navegadores en términos de soporte para desarrolladores. Sus herramientas integradas nos ayudan a determinar casi cualquier aspecto de las interacciones y los recursos del lado del cliente. Desempeña un gran papel por motivos de seguridad.