highCVE-2026-55637Aug 25, 2026

CVE-2026-55637: genieacs-mcp DNS Rebinding via Missing Host and Origin Validation

Pranav Khune
Penetration Testing Team Lead, SecureLayer7

A malicious web page can use DNS rebinding to reach a victim's local genieacs-mcp HTTP listener and invoke GenieACS device-management tools (reboot, firmware update, parameter changes) without any…

Packagegithub.com/geiserx/genieacs-mcp
Ecosystemgo
Affected<= 0.3.1
Fixed in0.3.2
CVE-2026-55637: genieacs-mcp DNS Rebinding via Missing Host and Origin Validation

The problem

genieacs-mcp listens on 127.0.0.1:8080 by default and skips authentication entirely on the loopback interface. The unauthenticated branch passes requests straight to the MCP handler with no Host or Origin check.

DNS rebinding lets a public web page resolve attacker.example to 127.0.0.1, then POST to /mcp with a forged Host header. The server accepts it, creates a session, and exposes all 12 GenieACS tools including reboot_device, download_firmware, set_parameter, and manage_provision.

Proof of concept

A working proof-of-concept for CVE-2026-55637 in github.com/geiserx/genieacs-mcp, with the exact payload below.

http
POST /mcp HTTP/1.1
Host: attacker.example:8083
Origin: http://attacker.example:8083
Content-Type: application/json
Accept: application/json, text/event-stream

{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"genieacs-rebind-check","version":"1"}}}

The root cause is a missing origin validation gate in cmd/server/main.go. When MCP_AUTH_TOKEN is empty (the loopback default), the code calls httpSrv.Start(addr) directly with no middleware, so any HTTP client, including a browser pointed at the server via DNS rebinding, can initialize a full MCP session.

The patch (commit 577306d, PR #26) adds a middleware layer that inspects the Host and Origin headers before the request reaches the MCP handler. Requests whose Host or Origin do not resolve to an expected loopback value are rejected with HTTP 403. That closes the browser-origin path without breaking local MCP clients, which either omit Origin or set it to a trusted local value.

CWE-346 (Origin Validation Error) applies: the server trusted the caller's claimed origin rather than enforcing it.

The fix

Upgrade to genieacs-mcp v0.3.2 (commit 577306d). The patch adds Host and Origin validation middleware for the unauthenticated loopback HTTP transport. If you cannot upgrade immediately, set MCP_AUTH_TOKEN to a random secret and set TRANSPORT=stdio to avoid exposing an unauthenticated HTTP endpoint entirely.

Reporter not attributed.

References: [1][2][3][4][5]

Related research