Skip to content

MCP: contact re-derivation (Inv #7) not enforced on read-only tools accepting addressOrLabel #561

Description

@szhygulin

Summary

Inv #7 (contact decoration re-derivation) is enforced today on prepare_native_send, prepare_token_send, prepare_*_stake. It is NOT enforced on share_strategy, generate_readonly_link, add_contact re-confirmation, or any read-only flow. expert-108-C.4 showed that this gap permits the same attack vector (MCP returns spoofed contact decoration; agent narrative substitutes role) on a flow that is read-only at the moment of export but produces an artefact (strategy JSON, readonly link) that gets imported later by a different user/agent and becomes the attack vehicle.

Repro

Scripts: expert-108-C.4, newcomer-xn092-C.3.

Suggested fix

Standardise Inv #7 enforcement across every MCP tool that accepts an addressOrLabel parameter, regardless of read-only vs. signing classification. Implementation: add a requireContactReDerivation: true flag to the tool decorator; for any flagged tool, the MCP rejects the call unless the agent has called list_contacts(label=) in the same session and the returned address byte-equals the resolved parameter. Cache the list_contacts result for ≤60s to keep the call budget tight.

Source

Smoke-test batch-1 (matrix-sampled adversarial run, 2026-04-28). Findings: runs/matrix-sampled/batch-01/findings.md.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug_reportCategory: reports a bug surfaced via an agent's attempt at a capabilitysecurity_findingSecurity gap surfaced via adversarial smoke-test

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions