Skip to content
Heist/ feed
Back to feed
Low

ToolHive stores secrets in the state store with no encryption

Type: advisorySources: OSV

ToolHive is a utility designed to simplify the deployment and management of Model Context Protocol (MCP) servers. Due to the ordering of code used to start an MCP server container, versions of ToolHive prior to 0.0.33 inadvertently store secrets in the run config files which are used to restart stopped containers. This means that an attacker who has access to the home folder of the user who starts the MCP server can read secrets without needing access to the secrets store itself. This only applies to secrets which were used in containers whose run configs exist at a point in time - other secrets remaining inaccessible. ToolHive 0.0.33 fixes the issue. Some workarounds are available. Stop and delete any running MCP servers, or manually remove any runconfigs from `$HOME/Library/Application Support/toolhive/runconfigs/` (macOS) or `$HOME/.state/toolhive/runconfigs/` (Linux).

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2025-47274
Confirmed fixed CVEs
Not specified
Updated in this feed
7 Nov 2026, 01:23 UTC · Revision 1

Source evidence

ToolHive stores secrets in the state store with no encryption

core-osv · Original source

Published 12 May 2025, 14:57 UTC

ToolHive is a utility designed to simplify the deployment and management of Model Context Protocol (MCP) servers. Due to the ordering of code used to start an MCP server container, versions of ToolHive prior to 0.0.33 inadvertently store secrets in the run config files which are used to restart stopped containers. This means that an attacker who has access to the home folder of the user who starts the MCP server can read secrets without needing access to the secrets store itself. This only applies to secrets which were used in containers whose run configs exist at a point in time - other secrets remaining inaccessible. ToolHive 0.0.33 fixes the issue. Some workarounds are available. Stop and delete any running MCP servers, or manually remove any runconfigs from `$HOME/Library/Application Support/toolhive/runconfigs/` (macOS) or `$HOME/.state/toolhive/runconfigs/` (Linux).

osv:CVE-2025-47274
Complete source record
{
  "id": "1688dfdc958d2449d61586f4c98d761464873268fd98e97401232e8d729877ba",
  "url": "https://osv.dev/vulnerability/CVE-2025-47274",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "ToolHive stores secrets in the state store with no encryption",
    "summary": "ToolHive is a utility designed to simplify the deployment and management of Model Context Protocol (MCP) servers. Due to the ordering of code used to start an MCP server container, versions of ToolHive prior to 0.0.33 inadvertently store secrets in the run config files which are used to restart stopped containers. This means that an attacker who has access to the home folder of the user who starts the MCP server can read secrets without needing access to the secrets store itself. This only applies to secrets which were used in containers whose run configs exist at a point in time - other secrets remaining inaccessible. ToolHive 0.0.33 fixes the issue. Some workarounds are available. Stop and delete any running MCP servers, or manually remove any runconfigs from `$HOME/Library/Application Support/toolhive/runconfigs/` (macOS) or `$HOME/.state/toolhive/runconfigs/` (Linux).",
    "evidence": "osv:CVE-2025-47274",
    "products": [],
    "severity": "low",
    "structured": {
      "id": "CVE-2025-47274",
      "aliases": [
        "CVE-2025-47274",
        "GHSA-xj5p-w2v5-fjm6"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:P/VC:L/VI:N/VA:N/SC:L/SI:N/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/stacklok/toolhive",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "e8efa1b1d7b0776a39339257d30bf6c4a171f2b8"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "0.0.33"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "e8efa1b1d7b0776a39339257d30bf6c4a171f2b8"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "e8efa1b1d7b0776a39339257d30bf6c4a171f2b8"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v0.0.33"
                  },
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "0.0.33"
                      }
                    ],
                    "source": "DESCRIPTION"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v0.0.32",
            "v0.0.31",
            "v0.0.30",
            "v0.0.29",
            "v0.0.28",
            "v0.0.27",
            "v0.0.26",
            "v0.0.25",
            "v0.0.24",
            "v0.0.23",
            "v0.0.22",
            "v0.0.21",
            "v0.0.20",
            "v0.0.19",
            "v0.0.18",
            "v0.0.17",
            "v0.0.16",
            "v0.0.15",
            "v0.0.14",
            "v0.0.13",
            "v0.0.12",
            "v0.0.11",
            "v0.0.10",
            "v0.0.9",
            "v0.0.8",
            "v0.0.7",
            "v0.0.6",
            "v0.0.5",
            "v0.0.4",
            "v0.0.3",
            "v0.0.2",
            "v0.0.1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-47274.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:48.678762154Z",
      "provider": "osv",
      "references": [
        "https://github.com/stacklok/toolhive/releases/tag/v0.0.33",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/47xxx/CVE-2025-47274.json",
        "https://github.com/stacklok/toolhive/security/advisories/GHSA-xj5p-w2v5-fjm6",
        "https://nvd.nist.gov/vuln/detail/CVE-2025-47274",
        "https://github.com/stacklok/toolhive/commit/e8efa1b1d7b0776a39339257d30bf6c4a171f2b8"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-311"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/47xxx/CVE-2025-47274.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2025-47274",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 516954,
  "published_at": "2025-05-12T14:57:46.781+00:00"
}