Skip to content
Heist/ feed
Back to feed
Medium

Process Compose: Browser DNS rebinding lets websites control local process-compose MCP tools

Type: advisorySources: OSV

Process Compose is a scheduler and orchestrator for non-containerized applications. Prior to 1.120.0, the MCP SSE listener in src/mcp/server.go accepts browser-origin requests to /sse and the returned message endpoint without validating the Host header, validating the Origin header, or authenticating the caller. When MCP SSE is enabled, a malicious website can use DNS rebinding to reach the loopback listener and issue MCP requests. If expose_control_tools is enabled, the attacker can enumerate process state, read or search logs, truncate logs, and start, stop, restart, or scale local processes; configured user-defined tools can expose additional commands and output. The Gin REST API token middleware does not protect this separately started MCP listener. This issue is fixed in version 1.120.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-77339
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 15:50 UTC · Revision 1

Source evidence

Process Compose: Browser DNS rebinding lets websites control local process-compose MCP tools

core-osv · Original source

Published 18 Sept 2026, 16:37 UTC

Process Compose is a scheduler and orchestrator for non-containerized applications. Prior to 1.120.0, the MCP SSE listener in src/mcp/server.go accepts browser-origin requests to /sse and the returned message endpoint without validating the Host header, validating the Origin header, or authenticating the caller. When MCP SSE is enabled, a malicious website can use DNS rebinding to reach the loopback listener and issue MCP requests. If expose_control_tools is enabled, the attacker can enumerate process state, read or search logs, truncate logs, and start, stop, restart, or scale local processes; configured user-defined tools can expose additional commands and output. The Gin REST API token middleware does not protect this separately started MCP listener. This issue is fixed in version 1.120.0.

osv:CVE-2026-77339
Complete source record
{
  "id": "ad107960f3b09592cfe595b105d4ade4b664e916e5c07e0d16d1aaccb6eaca98",
  "url": "https://osv.dev/vulnerability/CVE-2026-77339",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Process Compose: Browser DNS rebinding lets websites control local process-compose MCP tools",
    "summary": "Process Compose is a scheduler and orchestrator for non-containerized applications. Prior to 1.120.0, the MCP SSE listener in src/mcp/server.go accepts browser-origin requests to /sse and the returned message endpoint without validating the Host header, validating the Origin header, or authenticating the caller. When MCP SSE is enabled, a malicious website can use DNS rebinding to reach the loopback listener and issue MCP requests. If expose_control_tools is enabled, the attacker can enumerate process state, read or search logs, truncate logs, and start, stop, restart, or scale local processes; configured user-defined tools can expose additional commands and output. The Gin REST API token middleware does not protect this separately started MCP listener. This issue is fixed in version 1.120.0.",
    "evidence": "osv:CVE-2026-77339",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-77339",
      "aliases": [
        "CVE-2026-77339",
        "GHSA-5gm3-9crp-6g3v",
        "GO-2026-6515"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:L/SI:H/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/f1bonacc1/process-compose",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "0f3a8e6868f592f044a2ecd9387ff3025825ad46"
                },
                {
                  "fixed": "6ffa74f462cd2fa4f8dc1ee63c70b793b298c858"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "1.120.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "6ffa74f462cd2fa4f8dc1ee63c70b793b298c858"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "0f3a8e6868f592f044a2ecd9387ff3025825ad46"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v1.120.0"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v1.116.0",
            "v1.110.0",
            "v1.103.0",
            "v1.100.0",
            "v1.94.0",
            "v1.90.0",
            "v1.87.0",
            "v1.85.0",
            "v1.78.0",
            "v1.76.1",
            "v1.76.0",
            "v1.75.2",
            "v1.75.0",
            "v1.73.0",
            "v1.64.1",
            "v1.63.0",
            "v1.46.0",
            "v1.40.1",
            "v1.34.0",
            "v1.27.0",
            "v1.24.2",
            "v1.24.0",
            "v1.18.0",
            "v1.9.0",
            "v1.6.1",
            "v1.5.0",
            "v1.2.0",
            "v1.0.1",
            "v1.0.0",
            "v0.88.0",
            "v0.85.0",
            "v0.81.4",
            "v0.80.0",
            "v0.77.8",
            "v0.77.4",
            "v0.75.1",
            "v0.75.0",
            "v0.69.0",
            "v0.65.1",
            "v0.60.0",
            "v0.51.4",
            "v0.51.0",
            "v0.45.0",
            "v0.43.1",
            "v0.40.2",
            "v0.40.1",
            "v0.40.0",
            "v0.29.7",
            "v0.29.5",
            "v0.29.4",
            "v0.29.1",
            "v0.29.0",
            "v0.28.0",
            "v0.24.1",
            "v0.24.0",
            "v0.21.0",
            "v0.20.0",
            "v0.17.0",
            "v0.16.0",
            "v0.15.0",
            "v0.10.2",
            "v0.10.1",
            "v0.8.0",
            "v0.6.0",
            "v0.5.2",
            "v0.4.2"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-77339.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:36.806247931Z",
      "provider": "osv",
      "references": [
        "https://github.com/F1bonacc1/process-compose/releases/tag/v1.120.0",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/77xxx/CVE-2026-77339.json",
        "https://github.com/F1bonacc1/process-compose/security/advisories/GHSA-5gm3-9crp-6g3v",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-77339",
        "https://github.com/F1bonacc1/process-compose/commit/6ffa74f462cd2fa4f8dc1ee63c70b793b298c858"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-306",
          "CWE-346"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/77xxx/CVE-2026-77339.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-77339",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 504301,
  "published_at": "2026-09-18T16:37:19.072+00:00"
}