Skip to content
Heist/ feed
Back to feed
Medium

MaxKB: RCE via MCP stdio command injection in workflow engine

Type: advisorySources: OSV

MaxKB is an open-source AI assistant for enterprise. Versions 2.7.1 and below contain an incomplete fix for CVE-2025-53928, where a Remote Code Execution vulnerability still exists in the MCP node of the workflow engine. MaxKB only restricts the referencing code path (loading MCP config from the database). The else branch, responsible for loading mcp_servers directly from user-supplied JSON remains completely unpatched. Since mcp_source is an optional field (required=False), an attacker can simply omit it or set it to any non-referencing value to bypass the fix. By calling the workflow creation API directly with a crafted JSON payload, an attacker can inject a complete MCP node configuration with stdio transport, arbitrary command, and args — achieving RCE when the workflow is triggered via chat. This issue has been fixed in version 2.8.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-39417
Confirmed fixed CVEs
Not specified
Updated in this feed
2 Nov 2026, 18:32 UTC · Revision 1

Source evidence

MaxKB: RCE via MCP stdio command injection in workflow engine

core-osv · Original source

Published 14 Apr 2026, 00:03 UTC

MaxKB is an open-source AI assistant for enterprise. Versions 2.7.1 and below contain an incomplete fix for CVE-2025-53928, where a Remote Code Execution vulnerability still exists in the MCP node of the workflow engine. MaxKB only restricts the referencing code path (loading MCP config from the database). The else branch, responsible for loading mcp_servers directly from user-supplied JSON remains completely unpatched. Since mcp_source is an optional field (required=False), an attacker can simply omit it or set it to any non-referencing value to bypass the fix. By calling the workflow creation API directly with a crafted JSON payload, an attacker can inject a complete MCP node configuration with stdio transport, arbitrary command, and args — achieving RCE when the workflow is triggered via chat. This issue has been fixed in version 2.8.0.

osv:CVE-2026-39417
Complete source record
{
  "id": "2dbe567353414490ee2e9d25cfe6db33e4a27bb410d92a5ea463afa741bcd952",
  "url": "https://osv.dev/vulnerability/CVE-2026-39417",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "MaxKB: RCE via MCP stdio command injection in workflow engine",
    "summary": "MaxKB is an open-source AI assistant for enterprise. Versions 2.7.1 and below contain an incomplete fix for CVE-2025-53928, where a Remote Code Execution vulnerability still exists in the MCP node of the workflow engine. MaxKB only restricts the referencing code path (loading MCP config from the database). The else branch, responsible for loading mcp_servers directly from user-supplied JSON remains completely unpatched. Since mcp_source is an optional field (required=False), an attacker can simply omit it or set it to any non-referencing value to bypass the fix. By calling the workflow creation API directly with a crafted JSON payload, an attacker can inject a complete MCP node configuration with stdio transport, arbitrary command, and args — achieving RCE when the workflow is triggered via chat. This issue has been fixed in version 2.8.0.",
    "evidence": "osv:CVE-2026-39417",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-39417",
      "aliases": [
        "CVE-2026-39417",
        "GHSA-pw52-326g-r5xj"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:L"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/1panel-dev/maxkb",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "f0a73da5d9ee22e6374dabd4da1081569659530c"
                },
                {
                  "fixed": "50e96002ee5dca34c68d3d9333b64ea358c92304"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:maxkb:maxkb:*:*:*:*:-:*:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.8.0"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "range": [
                      {
                        "fixed": "50e96002ee5dca34c68d3d9333b64ea358c92304"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "f0a73da5d9ee22e6374dabd4da1081569659530c"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v2.8.0"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v2.7.0",
            "v2.6.1",
            "v2.6.0",
            "v2.5.0",
            "v2.4.0",
            "v2.3.0",
            "v2.2.0",
            "v2.1.0",
            "v2.0.2",
            "v2.0.1",
            "v2.0.0",
            "v1.10.4-lts",
            "v1.10.3-lts",
            "v1.10.2-lts",
            "v1.10.1-lts",
            "v1.10.0-lts",
            "v1.9.0",
            "v1.7.0",
            "v1.6.1",
            "v1.6.0",
            "v1.5.0",
            "v1.4.0",
            "v1.3.0",
            "v1.2.1",
            "v1.2.0",
            "v1.1.3",
            "v1.1.2",
            "v1.1.1",
            "v1.1.0",
            "v1.0.1",
            "v1.0.0",
            "v0.9.1",
            "v0.9.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-39417.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:22.297727623Z",
      "provider": "osv",
      "references": [
        "https://github.com/1Panel-dev/MaxKB/releases/tag/v2.8.0",
        "https://github.com/1Panel-dev/MaxKB/security/advisories/GHSA-pw52-326g-r5xj",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/39xxx/CVE-2026-39417.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-39417",
        "https://github.com/1Panel-dev/MaxKB/commit/50e96002ee5dca34c68d3d9333b64ea358c92304"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-20",
          "CWE-78"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/39xxx/CVE-2026-39417.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-39417",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 488538,
  "published_at": "2026-04-14T00:03:16.02+00:00"
}