
T3 Código 61c3794c origen residual. La actualización de wsTicket ignora el Origin. La cookie sin Origin se acepta. La cookie con Origin hostil se rechaza. Laboratorio de loopback.
Un ticket de socket en la URL no le importa qué sitio web lo solicitó. Las sesiones con cookie con un Origin hostil son rechazadas. Las sesiones con cookie sin cabecera Origin son aceptadas. Los tokens Bearer ignoran Origin a propósito. La cookie de sesión es SameSite=Lax, que es lo que actualmente detiene un WebSocket con cookie entre sitios.
Clase: Residuo de Origin
Alcance: Local / portador del ticket (Origin hostil en wsTicket; Origin ausente en cookies)
T3 Code 61c3794c - Ping
| ID | aún sin CVE |
| Clase | Residuo de Origin |
| Alcance | Local (ticket en la URL de upgrade, o un cliente con cookie que omite Origin) |
| CWE | CWE-346 / CWE-200 |
| CVSS | Bajo: 3.1 CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:N |
| Producto | T3 Code |
| Afectado | 61c3794c32b0eeebfac09add43e403618c65d2d7 |
| Autenticación | wsTicket válido o cookie de sesión del navegador |
| Licencia | GNU Affero GPL v3.0 |
| Laboratorio | authenticateWebSocketUpgrade de producción sobre la capa de pruebas de Effect |
Necesita un wsTicket activo o una cookie que el navegador adjuntará. Las cookies Lax no se adjuntan a un handshake WebSocket entre sitios en los navegadores actuales. Un ticket en la cadena de consulta es la vía que omite Origin por completo.
| Privilegio | Método / sink | Reconocimiento / integridad / disponibilidad | Probado en laboratorio o inferido |
|---|---|---|---|
Autenticar un upgrade a /ws con un ticket y un Origin hostil | authenticateWebSocketUpgrade, consulta wsTicket | Integridad (sesión en el socket) | Probado en laboratorio. ticket-hostile-origin=accepted, Origin https://evil.example |
| Autenticar un upgrade con cookie sin Origin | fallback de cookie a través de isBrowserOriginAllowed (origin === undefined devuelve true) | Integridad | Probado en laboratorio. cookie-missing-origin=accepted |
| Autenticar un upgrade Bearer desde un Origin hostil | mismo autenticador, cabecera Authorization | Integridad | Probado en laboratorio. bearer-hostile-origin=accepted (prueba del producto; no es una cookie) |
| Control negativo: cookie + Origin hostil | Origin http://192.168.1.50:8080 | n/a | Probado en laboratorio. rechazado ServerAuthInvalidCredentialError |
| Control negativo: cookie + Origin de confianza | Origin del mismo host | n/a | Probado en laboratorio. aceptado |
Permanece cerrado en este residuo
| Eje | Método / sink | Por qué está cerrado |
|---|---|---|
| Integridad | WebSocket con cookie desde un sitio web aleatorio con cabecera Origin | isBrowserOriginAllowed rechaza; SameSite=Lax también retiene la cookie |
| Integridad | /ws sin autenticar | la credencial ausente falla |
| Integridad | CSRF con cookie entre sitios en los navegadores actuales | Cookies.set sameSite: "lax" en apps/server/src/auth/http.ts |
La línea de auditoría "no hay comprobación de Origin en ningún punto de la ruta de upgrade" es demasiado amplia. El Origin hostil con cookie se rechaza en este pin. El residuo es la vía del ticket y la rama de cookie sin Origin.
GET /ws llama a authenticateWebSocketUpgrade. Si wsTicket está presente, la función verifica el ticket y retorna antes de isBrowserOriginAllowed. El fallback de cookie sí lo llama. Generé un ticket y una sesión con cookie en la capa de pruebas EnvironmentAuth y envié la matriz de Origin a través de la función de producción.
Falsos caminos: reportar "sin comprobación de Origin" para los upgrades con cookie (el Origin hostil se rechaza).
python3 t3code-websocket-ticket-origin-Abraxas-Labs.py
o:
cd lab
./run.sh
IOC cookie-missing-origin=accepted
IOC cookie-hostile-origin=rejected
IOC cookie-trusted-origin=accepted
IOC ticket-hostile-origin=accepted
IOC bearer-hostile-origin=accepted
IOC samesite=lax
SUCCESS T3-F04-WSORIGIN t3f04o6n1
Ejecuta isBrowserOriginAllowed también en la ruta del ticket, o vincula los tickets al Origin que los emitió. Trata un Origin ausente como un fallo para las credenciales de cookie en lugar de un aprobado. Añade una lista de permitidos explícita de Origin en el upgrade (devOrigin, t3code://app, hosts de túnel configurados). Mantén SameSite=Lax (o Strict).
61c3794c32b0eeebfac09add43e403618c65d2d7EnvironmentAuth.authenticateWebSocketUpgradeGNU Affero GPL v3.0. Consulta LICENSE. Solo laboratorio en loopback. Sin garantía.
Abraxas Labs [email protected]
Por favor, atribuye el CVE a Abraxas Labs.