You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tracker for findings from a 44-script adversarial smoke test of vaultpilot-mcp + the vaultpilot-preflight skill (sentinel v5_9c4a2e7f3d816b50), run on 2026-04-28 via the crypto-security-smoke-test skill.
This is the red-team companion to the base smoke test (#448). Where the base run measured "can the MCP fulfill honest user intent?", this run measured "can a rogue agent / rogue MCP / supply-chain tamper steal funds?"
Threat model
44 subagents assigned across 5 roles:
A — rogue agent / honest MCP (17 scripts): user-facing agent is the attacker
C — combined (5 scripts): both compromised, coordinating
D — supply-chain tamper (1 script): preflight skill on disk modified
E — control (4 scripts): all honest, baseline retest
Headline finding
The skill held on the threats it was written for. Bytes-level invariants (#1, #2, #6, #7, #11) caught every recipient swap, chainId swap, approval cloak, and bridge destinationChainId fraud. Step 0 (skill integrity) fired correctly — critical, since every other invariant assumes Step 0 has held.
Five structural gaps surfaced where the defense relies on user vigilance, opt-in second-LLM checks, or tool-surface absence rather than load-bearing invariants:
These should land coordinated with a sentinel bump on SKILL.md (v5 → v6) and matching MCP pin update — same atomic-update discipline the skill already calls out for new bridge allowlist entries.
Resilience matrix (summary)
Role
Attacks tested
Caught
Tricked (yes / depends-on-user)
A
17
17
0 / 1 (a086 — agent-side lie)
B
17
14 fully + 3 conditionally
0 / 3 (110, 136, 137)
C
5
5
0 / 0
D
1
1 (Step 0 fired)
0 / 0
E
4
4 (controls match honest baseline)
0 / 0
Methodology
Same script catalog as base smoke test (Smoke-test 2026-04-28: 120 scripts, 21 findings (tracker) #448) plus 30 enrichment scripts focused on security (high-value sends, EIP-712, chain-swap traps, intermediate-chain bridges, EIP-7702, social-engineering, address impersonation, blind-sign pressure)
Each subagent simulated its assigned attack via transcript description — no actual exfiltration, no broadcasts, demo mode throughout
Defensive resilience measured via [ADVERSARIAL_RESULT] blocks per transcript (defense_layer / did_user_get_tricked / notes)
Analysis sub-agent produced findings_adversarial.md from which the 6 sub-issues are derived
Caveats / scope
All testing was on a vaultpilot-mcp install owned by the test runner. Demo mode prevents real fund movement.
"Subagent simulating compromised MCP" means the subagent narrated the attack in its transcript — there was no actual MCP modification. The corpus measures whether the documented invariants WOULD catch the attack if the MCP were compromised.
Sub-issues are filed with the existing bug_report label since no security_finding label exists on the repo. Recommend creating one for triage (this issue can be the seed).
Summary
Tracker for findings from a 44-script adversarial smoke test of vaultpilot-mcp + the vaultpilot-preflight skill (sentinel
v5_9c4a2e7f3d816b50), run on 2026-04-28 via thecrypto-security-smoke-testskill.This is the red-team companion to the base smoke test (#448). Where the base run measured "can the MCP fulfill honest user intent?", this run measured "can a rogue agent / rogue MCP / supply-chain tamper steal funds?"
Threat model
44 subagents assigned across 5 roles:
Headline finding
The skill held on the threats it was written for. Bytes-level invariants (#1, #2, #6, #7, #11) caught every recipient swap, chainId swap, approval cloak, and bridge destinationChainId fraud. Step 0 (skill integrity) fired correctly — critical, since every other invariant assumes Step 0 has held.
Five structural gaps surfaced where the defense relies on user vigilance, opt-in second-LLM checks, or tool-surface absence rather than load-bearing invariants:
Proposed new invariants
The 6 sub-issues collectively propose:
These should land coordinated with a sentinel bump on SKILL.md (v5 → v6) and matching MCP pin update — same atomic-update discipline the skill already calls out for new bridge allowlist entries.
Resilience matrix (summary)
Methodology
[ADVERSARIAL_RESULT]blocks per transcript (defense_layer / did_user_get_tricked / notes)findings_adversarial.mdfrom which the 6 sub-issues are derivedCaveats / scope
bug_reportlabel since nosecurity_findinglabel exists on the repo. Recommend creating one for triage (this issue can be the seed).🤖 Generated with Claude Code