Confirmed users
1,021
edits
Line 133: | Line 133: | ||
=== Data-flow Enumeration === | === Data-flow Enumeration === | ||
{| border="1" class="fullwidth-table" | {| border="1" class="fullwidth-table" | ||
Line 146: | Line 140: | ||
| align="center" style="background:#f0f0f0;"|'''Description''' | | align="center" style="background:#f0f0f0;"|'''Description''' | ||
|- | |- | ||
|1 | |1||Client||Server|| Client connects via WebSocket protocol and sends a "hello" JSON packet containing the clients UAID. | ||
|- | |- | ||
| | |2||Server||Client|| Server responds with a "hello" JSON response. Server records that the UAID is now active and associates it to the listening websocket connection. | ||
|- | |- | ||
| | |3a||Server||Client|| Server checks if there is outbound ChannelID updates for UAID and sends them as a "notification" packet" | ||
|- | |||
|3b||Client||Server|| Client "ack"s the Notification packet. Server deletes any "ack'd" notifications and re-flushes (see step 3a) until no more notifications are present. | |||
|- | |||
|4||Client||Server|| Client registers a new ChannelID and receives a new "endpoint" URL | |||
|- | |||
|4a||Client||App|| (OUT OF BAND) The client relays the Endpoint to the app, which then communicates it back to 3rdPartyServer for later use. | |||
|- | |||
|5||3rdPartyServer||Server|| 3rdPartyServer PUTS to "endpoint". The specification requests that the server use "?v=..." however this version information is discarded by the Server. The server records the event to a record in memcache identified by UAID.ChannelID | |||
|- | |||
|5a||Server||Client|| IFF the client is actively connected, Server conducts a flush (See step 3*) | |||
|- | |||
|5b||Server||Magic|| IFF the client is not currently connected, an Proprietary Wake Up method may be employed. The client reconnects and starts at Step 1. | |||
|- | |- | ||
|} | |} | ||
=== Threat Analysis === | === Threat Analysis === |