
T3 Code 61c3794c résidu d'origine. La mise à niveau wsTicket ignore l'en-tête Origin. Un cookie sans Origin est accepté. Un cookie avec un Origin hostile est rejeté. Laboratoire en boucle locale.
Un ticket de socket dans l'URL ne se soucie pas du site web qui l'a demandé. Les sessions par cookie avec une Origin hostile sont rejetées. Les sessions par cookie sans en-tête Origin sont acceptées. Les jetons Bearer ignorent Origin volontairement. Le cookie de session est SameSite=Lax, ce qui est ce qui bloque actuellement un WebSocket par cookie cross-site.
Classe : Origin leftover
Portée : Local / détenteur de ticket (Origin hostile sur wsTicket ; Origin manquante sur les cookies)
T3 Code 61c3794c - Ping
| ID | pas encore de CVE |
| Classe | Origin leftover |
| Portée | Local (ticket dans l'URL d'upgrade, ou un client à cookie qui omet Origin) |
| CWE | CWE-346 / CWE-200 |
| CVSS | Faible : 3.1 CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:N |
| Produit | T3 Code |
| Affecté | 61c3794c32b0eeebfac09add43e403618c65d2d7 |
| Auth | wsTicket valide ou cookie de session du navigateur |
| Licence | GNU Affero GPL v3.0 |
| Lab | authenticateWebSocketUpgrade de production sur la couche de test Effect |
Nécessite un wsTicket actif ou un cookie que le navigateur attachera. Les cookies Lax ne sont pas attachés à une poignée de main WebSocket cross-site dans les navigateurs actuels. Un ticket dans la chaîne de requête est la voie qui contourne entièrement Origin.
| Privilège | Méthode / sink | Reconnaissance / intégrité / disponibilité | Prouvé en lab ou déduit |
|---|---|---|---|
Authentifier un upgrade /ws avec un ticket et une Origin hostile | authenticateWebSocketUpgrade, requête wsTicket | Intégrité (session sur le socket) | Prouvé en lab. ticket-hostile-origin=accepted, Origin https://evil.example |
| Authentifier un upgrade par cookie sans Origin | repli cookie via isBrowserOriginAllowed (origin === undefined renvoie true) | Intégrité | Prouvé en lab. cookie-missing-origin=accepted |
| Authentifier un upgrade Bearer depuis une Origin hostile | même authentificateur, en-tête Authorization | Intégrité | Prouvé en lab. bearer-hostile-origin=accepted (test produit ; pas un cookie) |
| Contrôle négatif : cookie + Origin hostile | Origin http://192.168.1.50:8080 | s.o. | Prouvé en lab. rejeté ServerAuthInvalidCredentialError |
| Contrôle négatif : cookie + Origin de confiance | Origin du même hôte | s.o. | Prouvé en lab. accepté |
Reste fermé sur ce leftover
| Axe | Méthode / sink | Pourquoi c'est fermé |
|---|---|---|
| Intégrité | WebSocket par cookie depuis un site web aléatoire avec un en-tête Origin | isBrowserOriginAllowed rejette ; SameSite=Lax retient également le cookie |
| Intégrité | /ws non authentifié | identifiant manquant échoue |
| Intégrité | CSRF par cookie cross-site dans les navigateurs actuels | Cookies.set sameSite: "lax" dans apps/server/src/auth/http.ts |
La ligne d'audit « aucune vérification d'Origin nulle part sur le chemin d'upgrade » est trop large. L'Origin hostile par cookie est rejetée sur ce pin. Le leftover est le chemin du ticket et la branche cookie sans Origin.
GET /ws appelle authenticateWebSocketUpgrade. Si wsTicket est présent, la fonction vérifie le ticket et retourne avant isBrowserOriginAllowed. Le repli cookie l'appelle bien. J'ai généré un ticket et une session par cookie sur la couche de test EnvironmentAuth et j'ai envoyé la matrice d'Origin à travers la fonction de production.
Fausses pistes : signaler « aucune vérification d'Origin » pour les upgrades par cookie (l'Origin hostile est rejetée).
python3 t3code-websocket-ticket-origin-Abraxas-Labs.py
ou :
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
Exécutez isBrowserOriginAllowed également sur le chemin du ticket, ou liez les tickets à l'Origin qui les a émis. Traitez une Origin absente comme un échec pour les identifiants par cookie au lieu d'un succès. Ajoutez une liste d'autorisation explicite des Origin sur l'upgrade (devOrigin, t3code://app, hôtes de tunnel configurés). Conservez SameSite=Lax (ou Strict).
61c3794c32b0eeebfac09add43e403618c65d2d7EnvironmentAuth.authenticateWebSocketUpgradeGNU Affero GPL v3.0. Voir LICENSE. Laboratoire en boucle locale uniquement. Aucune garantie.
Abraxas Labs [email protected]
Veuillez créditer la CVE à Abraxas Labs.