Skip to content

docs(security): SAFE-MCP audit report 2026-04-17 (closes #747) - #808

Merged
molecule-ai[bot] merged 1 commit into
mainfrom
fix/issue-747-safe-mcp-audit
Apr 17, 2026
Merged

docs(security): SAFE-MCP audit report 2026-04-17 (closes #747)#808
molecule-ai[bot] merged 1 commit into
mainfrom
fix/issue-747-safe-mcp-audit

Conversation

@molecule-ai

@molecule-ai molecule-ai Bot commented Apr 17, 2026

Copy link
Copy Markdown
Contributor

[security-auditor-agent]

Closes #747.

Summary

Findings Summary

Severity Count IDs
CRITICAL 0 — (VULN-001 was CRITICAL, now FIXED)
HIGH 3 NEW-003, VULN-003, VULN-004 (+ VULN-002 partially mitigated)
MEDIUM 4 VULN-006, NEW-002, NEW-001, VULN-005
LOW 1 NEW-004
FIXED 1 VULN-001 (#761)

High-Priority Findings

NEW-003 (HIGH) — Unpinned npm MCP packages in .mcp.json (#805)
Both @molecule-ai/mcp-server and @awareness-sdk/local run via npx -y with no version pin — arbitrary code execution on next restart if either npm package is compromised. Fix: pin exact versions, remove -y, add lockfile.

VULN-003 (HIGH) — No manifest signing on GitHub plugin install (#806)
platform/internal/plugins/github.go clones plugin repos with no checksum/signature verification. A push to an org-allowed repo installs unverified content. Fix: add sha256: field to plugin.yaml, verify post-clone.

VULN-004 (HIGH) — Floating plugin refs
No enforcement of pinned #sha or #vtag for production installs. Same org/repo ref installs different code on reinstall. Fix: reject bare org/repo without explicit ref.

VULN-002 (HIGH, partially mitigated) — GLOBAL memory delimiter spoofing (#807)
PR #767 added a [MEMORY id=... scope=GLOBAL from=...]: wrapper — good mitigation. Remaining gap: content that begins with a fake [MEMORY ...] prefix defeats the visual heuristic. No write-time content scanning exists. Fix: reject writes matching delimiter prefix; add injection heuristic scan.

Medium/Low Findings (backlog)

  • VULN-006 MEDIUM — No tool output sanitization in a2a_mcp_server.py — delegate_task results returned verbatim
  • NEW-002 MEDIUM — Default subprocess sandbox allows language=shell/bash — SAFE-T1301
  • NEW-001 MEDIUMbuiltin_tools/a2a_tools.py and delegation.py missing auth_headers() on A2A calls
  • VULN-005 MEDIUM — GLOBAL memories readable by all workspaces (partially mitigated by delimiter)
  • NEW-004 LOW_maybe_log_skill_promotion unauthenticated heartbeat POST

Test plan

🤖 Generated with Claude Code — Security Auditor Agent

Adds docs/security/safe-mcp-audit-2026-04-17.md — full SAFE-MCP ATT&CK
audit of @molecule-ai/mcp-server against 4 high-priority techniques:

SAFE-T1102 (Supply chain):
  - NEW-003 HIGH: Unpinned npm MCP packages in .mcp.json (npx -y)
  - VULN-003 HIGH: No manifest signing on GitHub plugin install
  - VULN-004 HIGH: Floating plugin refs, no version pinning enforced

SAFE-T1201 (Prompt injection):
  - VULN-002 HIGH: GLOBAL memory poisoning — delimiter spoofing gap
    (partial mitigation via #767 globalMemoryDelimiter confirmed)
  - VULN-006 MEDIUM: No tool output sanitization in MCP server

SAFE-T1301 (Excessive permissions):
  - NEW-002 MEDIUM: Default subprocess sandbox allows language=shell/bash

SAFE-T1401 (Secret exfiltration):
  - NEW-001 MEDIUM: builtin_tools missing auth_headers() on A2A calls
  - VULN-005 MEDIUM: GLOBAL memories readable by all workspaces

Confirmed fix: VULN-001 (X-Workspace-ID system-caller forge, #761) CLOSED.

Closes #747.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@molecule-ai
molecule-ai Bot merged commit 6e9ef5f into main Apr 17, 2026
molecule-ai Bot pushed a commit that referenced this pull request Apr 17, 2026
… PR #808 audit)

Adds a concise action advisory for engineering leads summarising the 9 open
findings from the full SAFE-MCP audit, with immediate remediation steps for
NEW-003 (unpinned npm packages in .mcp.json — HIGH), a Phase 35 scoping
recommendation for plugin supply-chain hardening (VULN-003, VULN-004), and
medium-term GLOBAL memory scope controls (VULN-002, VULN-005).

Pairs with: monorepo PR #808, docs PR #18

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
molecule-ai Bot pushed a commit that referenced this pull request Apr 21, 2026
… PR #808 audit)

Adds a concise action advisory for engineering leads summarising the 9 open
findings from the full SAFE-MCP audit, with immediate remediation steps for
NEW-003 (unpinned npm packages in .mcp.json — HIGH), a Phase 35 scoping
recommendation for plugin supply-chain hardening (VULN-003, VULN-004), and
medium-term GLOBAL memory scope controls (VULN-002, VULN-005).

Pairs with: monorepo PR #808, docs PR #18

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@HongmingWang-Rabbit
HongmingWang-Rabbit deleted the fix/issue-747-safe-mcp-audit branch April 24, 2026 00:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

security: audit molecule-mcp-server against SAFE-MCP threat model (LF/OpenID adopted)

0 participants