The Subtle Exploit Hidden Within Every Call of Duty, Until Now
Table of Contents
What is The 'Connect' Packet
The 'connect' packet is a crucial part of the connection process in every Call of Duty title, used to establish communication with the dedicated servers and third-party authentication providers like Demonware. This packet contains a variety of critical player data ranging from player identifiers to game specific attributes that enables seamless server access. For over 15 years, the 'connect' packet has remained a core component of the game's connection protocol. Despite its significance, this packet has also remained largely unnoticed, even though it plays a vital role in the secure and accurate authentication of players as they connect to both the game's servers and external services.
How the 'Connect' Packet Works
This data may vary depending on the Call of Duty title. Within the game's networking, the 'connect' packet is generated during the client's initial connection attempt. The data inside the 'connect' packet includes player specific information such as the unique player ID, user session ID, platform data, and additional parameters, such as the player's clan ID and rank.
The process begins when a player initiates a connection, and the 'connect' packet is sent to the server.
- The server processes this information, checking the player's credentials, network state, and any other relevant data to ensure the session is valid.
- Based on this, the server may either approve the connection or trigger specific responses, such as a request for a challenge response, further verification, or migration of the session state. If any of the core data within the packet is incorrect or mismatched, the server will typically disconnect the player to maintain session integrity.
Key steps of how the packet functions:
- Player Data Transmission: The packet includes player specific data, such as
xuid(in older Call of Duty titles, this may vary to refer to thesteamidof the current account you're playing on, for other platforms like Battle.net, it is a generatedxuid, similar to how Steam assigns one during account creation), platform info, and player status. - Server Verification: The server processes the information in the packet, including the player's challenge and migration status, to ensure proper validation before the connection is accepted.
- Challenge Response: If the server requires further verification, it sends a challenge back to the client, which is also handled via the 'connect' packet.
- Out-of-Band Communication: The packet may include out-of-band data that allows the
server to
trigger further connection tasks, such as
"getchallenge"for re-authentication or migration requests.
In summary, the 'connect' packet is integral to the process of establishing a valid, secure connection between the player and the Call of Duty servers. Its role in transmitting player data and handling the authentication process makes it a cornerstone of the game's network architecture. Despite being an essential part of the connection flow for over 15 years, this packet has remained a largely unnoticed and under-explored component, with its full potential being uncovered only recently.
The Exploit
The primary exploit in the 'connect' packet occurs when a malicious user manipulates the xuid
value
within the packet. The xuid serves as a unique player identifier. By mismatching
their own
xuid with that of another player, the attacker can deceive the server into thinking they are
that player,
potentially gaining unauthorized access to the game session. This mismatch allows the attacker to bypass
player specific authentication checks, enabling various forms of exploitation such as impersonating other
players,
hijacking game sessions, or injecting invalid data into the server.
In addition to the xuid, the 'connect' packet also contains other critical data fields that
must align
with the game's expectations for the connection to be valid. These include details such as the
protocol
ID, challenge response, and netfieldchk. These values can vary between different
Call of
Duty titles, and even slight mismatches can cause the server to reject the connection or disconnect the
attacker.
Therefore, precision is critical when crafting the 'connect' packet, the attacker must ensure that all
fields match
the server's requirements exactly. This level of manipulation can also be used to forcefully disconnect any
client by
sending a crafted 'connect' packet with invalid or mismatched data, resulting in the server forcibly
disconnecting the
target client.
Code Breakdown:
The following code example demonstrates how to craft a 'connect' packet with a manipulated
xuid to
exploit the server. This specific code is for Call of Duty: Black Ops 3, though newer titles (e.g.,
MW2019) may have additional parameters that need to be set within the connect packet for
the exploit
to work correctly. These newer titles typically have more stringent data requirements, such as the inclusion
of
additional fields like challenge, protocol, checksum, and
statver.
(Steam) Black Ops 3 Connect Packet: