🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónValidar el origen del handshake
5 tareas · 40 min · Principiante
Cuando el canal se autentica con una cookie, el navegador la manda en el handshake sin preguntar qué página lo está abriendo. La única pista de quién pidió la conexión es la cabecera de origen, y solo sirve si el servidor la compara bien. El panel de coordinadores de Trasteos Corotos usa justo ese esquema, y un coordinador jura que no abrió el panel a la hora que dice el registro. Tienes el código, el inventario de dominios y dos registros.
Objetivo de la sala
Cuando el canal se autentica con una cookie, el navegador la manda en el handshake sin preguntar qué página lo está abriendo. La única pista de quién pidió la conexión es la cabecera de origen, y solo sirve si el servidor la compara bien. El panel de coordinadores de Trasteos Corotos usa justo ese esquema, y un coordinador jura que no abrió el panel a la hora que dice el registro. Tienes el código, el inventario de dominios y dos registros.Con una petición normal hecha desde JavaScript, el navegador aplica la política del mismo origen: una página de otro sitio puede enviar la petición, pero no leer la respuesta salvo que el servidor lo autorice. Con WebSocket no es así. Una página de cualquier sitio puede abrir una conexión hacia el servicio, el navegador adjunta las cookies que correspondan a ese destino según sus reglas, y si el servidor acepta, la página lee y escribe en el canal como si fuera la aplicación legítima.
Lo que el navegador sí hace es poner en el handshake la cabecera Origin con el origen de la página que abre la conexión, y no deja que el JavaScript la falsifique. La norma del protocolo indica que un servidor que no deba aceptar conexiones de cualquier página compare ese valor y responda 403 si no le sirve. CWE tiene una entrada específica para cuando no se hace: CWE-1385, falta de validación del origen en WebSockets.
Responde para continuar
¿Por qué una página de otro sitio puede usar la sesión de un coordinador en el canal de Corotos si nadie comprueba el origen?
Ver pista de ayuda
Piensa qué parte del trabajo hace el navegador por su cuenta y qué parte le queda al servidor.
Abre el laboratorio. ws-origen.js acepta un origen si contiene el nombre del dominio de la empresa en cualquier parte. Esa forma de comparar deja pasar dominios que nadie en Corotos registró, siempre que el texto aparezca dentro. Compara cada origen aceptado en registro-handshakes.txt con dominios-corotos.txt.
Responde para continuar
¿Qué origen aceptado en el registro no es un dominio de Corotos? Escríbelo tal como aparece.
Ver pista de ayuda
El nombre de Corotos aparece al principio, pero el dominio que manda es el que termina la dirección.
El hallazgo no es teórico si el registro muestra que con ese handshake viajó la cookie de alguien y que el canal entregó datos. La cookie del panel está marcada para viajar también en contextos de terceros, según el comentario del código, y eso es lo que hizo posible el resto.
Responde para continuar
¿De qué cuenta era la sesión que viajó en el handshake aceptado desde ese origen ajeno?
Ver pista de ayuda
Misma línea del registro de handshakes; después confirma en mensajes-enviados.txt qué recibió.
Un origen es esquema, host y puerto. La forma robusta de comprobarlo es tener la lista cerrada de orígenes que deben abrir el canal y comparar el valor completo contra ella, sin búsquedas de subcadenas ni expresiones sin anclar. El código de Corotos tiene un segundo detalle: cuando no hay cabecera de origen, acepta por defecto para no romper a un aliado que se conecta sin navegador.
Responde para continuar
¿Qué cambio en ws-origen.js corrige la comprobación?
Ver pista de ayuda
Terminar en el nombre tampoco basta si alguien registra un nombre que acabe igual sin el punto.
Un cliente que no es un navegador —un programa, una herramienta de línea de comandos— puede poner en la cabecera de origen lo que quiera. Por eso la norma aclara que esta comprobación no sirve para impedir que esos clientes se conecten. Su papel es otro, y conviene tenerlo claro antes de escribir el informe para que nadie lea el arreglo como un control de autenticación.
Responde para continuar
Si un programa puede enviar cualquier origen, ¿para qué sirve comprobarlo en el handshake?
Ver pista de ayuda
La víctima de este fallo siempre está usando un navegador.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.