
T3 Code 61c3794c residuo di origin. L'upgrade di wsTicket ignora Origin. Il cookie senza Origin viene accettato. Il cookie con Origin ostile viene rifiutato. Laboratorio loopback.
Un ticket socket nell'URL non si preoccupa di quale sito web lo abbia richiesto. Le sessioni cookie con un Origin ostile vengono rifiutate. Le sessioni cookie senza header Origin vengono accettate. I token Bearer ignorano Origin di proposito. Il cookie di sessione è SameSite=Lax, ed è ciò che attualmente blocca un WebSocket cookie cross-site.
Classe: Origine residua
Portata: Locale / possessore del ticket (Origin ostile su wsTicket; Origin mancante sui cookie)
T3 Code 61c3794c - Ping
| ID | nessuna CVE al momento |
| Classe | Origine residua |
| Portata | Locale (ticket nell'URL di upgrade, o un client cookie che omette Origin) |
| CWE | CWE-346 / CWE-200 |
| CVSS | Basso: 3.1 CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:N |
| Prodotto | T3 Code |
| Affetto | 61c3794c32b0eeebfac09add43e403618c65d2d7 |
| Auth | wsTicket valido o cookie di sessione del browser |
| Licenza | GNU Affero GPL v3.0 |
| Lab | authenticateWebSocketUpgrade di produzione sul layer di test Effect |
Richiede un wsTicket attivo o un cookie che il browser allegherà. I cookie Lax non vengono allegati a un handshake WebSocket cross-site nei browser attuali. Un ticket nella query string è il percorso che aggira del tutto Origin.
| Privilegio | Metodo / sink | Recon / integrità / disponibilità | Provato in lab o dedotto |
|---|---|---|---|
Autenticare un upgrade /ws con un ticket e un Origin ostile | authenticateWebSocketUpgrade, query wsTicket | Integrità (sessione sul socket) | Provato in lab. ticket-hostile-origin=accepted, Origin https://evil.example |
| Autenticare un upgrade cookie senza Origin | fallback cookie tramite isBrowserOriginAllowed (origin === undefined restituisce true) | Integrità | Provato in lab. cookie-missing-origin=accepted |
| Autenticare un upgrade Bearer da un Origin ostile | stesso autenticatore, header Authorization | Integrità | Provato in lab. bearer-hostile-origin=accepted (test del prodotto; non un cookie) |
| Controllo negativo: cookie + Origin ostile | Origin http://192.168.1.50:8080 | n/a | Provato in lab. rifiutato ServerAuthInvalidCredentialError |
| Controllo negativo: cookie + Origin attendibile | Origin dello stesso host | n/a | Provato in lab. accettato |
Resta chiuso su questa origine residua
| Asse | Metodo / sink | Perché è chiuso |
|---|---|---|
| Integrità | WebSocket cookie da un sito web casuale con un header Origin | isBrowserOriginAllowed rifiuta; SameSite=Lax trattiene anche il cookie |
| Integrità | /ws non autenticato | credenziale mancante fallisce |
| Integrità | CSRF cookie cross-site nei browser attuali | Cookies.set sameSite: "lax" in apps/server/src/auth/http.ts |
La riga di audit "nessun controllo Origin da nessuna parte sul percorso di upgrade" è troppo ampia. L'Origin ostile con cookie viene rifiutato su questo pin. L'origine residua è il percorso del ticket e il ramo cookie con Origin mancante.
GET /ws chiama authenticateWebSocketUpgrade. Se wsTicket è presente, la funzione verifica il ticket e ritorna prima di isBrowserOriginAllowed. Il fallback cookie la chiama effettivamente. Ho generato un ticket e una sessione cookie sul layer di test EnvironmentAuth e ho inviato la matrice di Origin attraverso la funzione di produzione.
Strade sbagliate: segnalare "nessun controllo Origin" per gli upgrade cookie (l'Origin ostile viene rifiutato).
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
Esegui isBrowserOriginAllowed anche sul percorso del ticket, oppure vincola i ticket all'Origin che li ha emessi. Tratta un Origin mancante come un fallimento per le credenziali cookie invece che come un superamento. Aggiungi una allowlist esplicita di Origin sull'upgrade (devOrigin, t3code://app, host tunnel configurati). Mantieni SameSite=Lax (o Strict).
61c3794c32b0eeebfac09add43e403618c65d2d7EnvironmentAuth.authenticateWebSocketUpgradeGNU Affero GPL v3.0. Vedi LICENSE. Solo laboratorio su loopback. Nessuna garanzia.
Abraxas Labs [email protected]
Si prega di attribuire la CVE ad Abraxas Labs.