Bungee-spoofing attack

From Kaboom Wiki
Revision as of 08:42, 4 August 2026 by Opt (talk | contribs) (Add some more information to the Velocity section)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Bungee spoofing is an attack against unfirewalled Bungeecord in which a player sends falsified player forwarding data (sent as part of the host field in the Handshake packet) to the backend server. Common targets for falsification are server owners, staff members and others with special permissions.

Solutions

BungeeGuard is a BungeeCord, Spigot and Sponge plugin developed by lucko which attempts to solve this problem by adding a secret token to the end of the player forwarding data.

This works for most setups, but if the backend and frontend (the proxy) servers communicate over the Internet, it can be intercepted with a sniffing attack as the Handshake packet is not encrypted and the token is sent in plaintext. It may additionally be possible to perform a timing-based side-channel attack, as the function responsible for checking the token may not always execute in constant time.

As such, for backend and frontend servers which may only communicate over the Internet, it is recommended that a firewall is configured for every backend server that listens on a public network interface, or communications are done exclusively virtual private network providing encryption.

Velocity

Another possible solution is to use Velocity's modern forwarding, which uses a HMAC to verify player data sent in a Login Plugin Message.

On offline-mode servers communicating across the Internet, it may be vulnerable to a replay attack as the Login Plugin Message packet is only encrypted on online mode servers. As HMACs only serve to verify the authenticity of the attached data, the data they verify is not encrypted in any way and can be inspected by a network attacker.

Offline mode servers with encryption enabled are susceptible to having their encryption effectively disabled with a man-in-the-middle-attack.

It is most secure to use a virtual private network or local network to facilitate communication between frontend and backend servers, and to configure a firewall rule if you cannot bind backend servers on a private address.