MaxKB: RCE via MCP stdio command injection in workflow engine
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 sourcePublished 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"
}