
T3 Code 61c3794c origin の残存。wsTicket アップグレードは Origin を無視する。Origin のない Cookie は受け入れられる。敵対的な Origin を持つ Cookie は拒否される。ループバックラボ。
URL内のソケットチケットは、どのウェブサイトがそれを要求したかを気にしない。敵対的なOriginを持つCookieセッションは拒否される。OriginヘッダーのないCookieセッションは受け入れられる。Bearerトークンは意図的にOriginを無視する。セッションCookieはSameSite=Laxであり、これが現在クロスサイトCookie WebSocketを阻止しているものである。
クラス: Originの取りこぼし
到達範囲: ローカル / チケット保持者(wsTicketに対する敵対的Origin、Cookieに対するOrigin欠落)
T3 Code 61c3794c - Ping
| ID | CVE未割当 |
| クラス | Originの取りこぼし |
| 到達範囲 | ローカル(アップグレードURL内のチケット、またはOriginを省略するCookieクライアント) |
| CWE | CWE-346 / CWE-200 |
| CVSS | 低: 3.1 CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:N |
| 製品 | T3 Code |
| 影響を受けるバージョン | 61c3794c32b0eeebfac09add43e403618c65d2d7 |
| 認証 | 有効なwsTicketまたはブラウザセッションCookie |
| ライセンス | GNU Affero GPL v3.0 |
| ラボ | Effectテストレイヤー上の本番authenticateWebSocketUpgrade |
有効なwsTicket、またはブラウザが付与するCookieが必要である。Lax Cookieは、現在のブラウザではクロスサイトWebSocketハンドシェイクに付与されない。クエリ文字列内のチケットは、Originを完全にスキップする経路である。
| 権限 | メソッド / シンク | 偵察 / 整合性 / 可用性 | ラボ実証または推測 |
|---|---|---|---|
チケットと敵対的Originで/wsアップグレードを認証する | authenticateWebSocketUpgrade、wsTicketクエリ | 整合性(ソケット上のセッション) | ラボ実証済み。ticket-hostile-origin=accepted、Origin https://evil.example |
| OriginなしでCookieアップグレードを認証する | isBrowserOriginAllowed経由のCookieフォールバック(origin === undefinedはtrueを返す) | 整合性 | ラボ実証済み。cookie-missing-origin=accepted |
| 敵対的OriginからBearerアップグレードを認証する | 同じ認証器、Authorizationヘッダー | 整合性 | ラボ実証済み。bearer-hostile-origin=accepted(製品テスト、Cookieではない) |
| ネガティブコントロール: Cookie + 敵対的Origin | Origin http://192.168.1.50:8080 | 該当なし | ラボ実証済み。ServerAuthInvalidCredentialErrorで拒否 |
| ネガティブコントロール: Cookie + 信頼されたOrigin | 同一ホストOrigin | 該当なし | ラボ実証済み。受け入れ |
この取りこぼしにおいて閉じたままのもの
| 軸 | メソッド / シンク | 閉じている理由 |
|---|---|---|
| 整合性 | Originヘッダー付きのランダムなウェブサイトからのCookie WebSocket | isBrowserOriginAllowedが拒否する。SameSite=LaxもCookieを付与しない |
| 整合性 | 未認証の/ws | 認証情報の欠落により失敗する |
| 整合性 | 現在のブラウザにおけるクロスサイトCookie CSRF | apps/server/src/auth/http.ts内のCookies.setのsameSite: "lax" |
監査行「アップグレード経路のどこにもOriginチェックがない」は範囲が広すぎる。このピンではCookieの敵対的Originは拒否される。取りこぼしはチケット経路とOrigin欠落のCookie分岐である。
GET /wsはauthenticateWebSocketUpgradeを呼び出す。wsTicketが存在する場合、関数はチケットを検証し、isBrowserOriginAllowedの前にリターンする。Cookieフォールバックはこれを呼び出す。EnvironmentAuthテストレイヤー上でチケットとCookieセッションを発行し、Originマトリクスを本番関数に通した。
誤った方向性: Cookieアップグレードについて「Originチェックなし」と報告すること(敵対的Originは拒否される)。
python3 t3code-websocket-ticket-origin-Abraxas-Labs.py
または:
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
チケットのパスでも isBrowserOriginAllowed を実行するか、チケットを発行した Origin にバインドしてください。Cookie 認証情報については、Origin の欠落を合格ではなく失敗として扱ってください。アップグレード時に明示的な Origin 許可リスト(devOrigin、t3code://app、設定済みのトンネルホスト)を追加してください。SameSite=Lax(または Strict)を維持してください。
61c3794c32b0eeebfac09add43e403618c65d2d7EnvironmentAuth.authenticateWebSocketUpgradeGNU Affero GPL v3.0。LICENSE を参照してください。ループバックラボ専用です。保証はありません。
Abraxas Labs [email protected]
CVE のクレジットは Abraxas Labs にお願いします。