Cross-site WebSocket hijacking
A page on another origin opens an authenticated socket and reads or performs protected operations.
Candidate CWE: CWE-346 · CWE-352
Test hypothesis#
From a controlled researcher page, open the observed socket using the actual browser session behavior. Send one harmless application-protocol message and compare a logged-out browser control.
Evidence required#
The other-origin page receives private controlled data or commits a protected action using ambient credentials. Record cookie policy, Origin, handshake, and message exchange.
Rule out false positives#
Arbitrary Origin accepted in a nonbrowser client, missing cookies, or a socket that permits only public data is insufficient.
Playbook and command references#
- REST, GraphQL, gRPC, WebSocket, and SSE permission parity — Carry the same permission invariant across protocols, nested fields, streams, and alternate API versions.
- Browser execution, cross-origin reads, and forged actions — Use real browser behavior to distinguish XSS, CSRF, CORS, and messaging failures from header-only leads.
Find the associated command snippets
Referenced by these target playbooks#
Report checklist#
- Capture the affected version, configuration, identities, and object ownership.
- Preserve a valid baseline and a negative control.
- Reproduce the forbidden data access, action, or state change on controlled fixtures.
- Explain the intended security rule and why the observed behavior violates it.
- State prerequisites, uncertainty, cleanup, and the smallest demonstrated impact.
Conditional ATT&CK mapping#
No direct ATT&CK mapping selected. Record the weakness and demonstrated impact without forcing an adversary-behavior classification. See the mapping guide.