Context
The address-book feature (`claude-work/HIGHEST-plan-address-book-merged.md`) introduces a new attack surface that didn't exist before: a persistent, label-keyed address resolver. The plan's threat model already names the core risk —
The contacts file lives on disk. Without integrity, a compromised MCP / malware / second process can substitute `"Mom" → attacker_address`; the agent dutifully resolves the label, the user clicks through the device screen because they trust the name.
…and proposes a per-chain signed blob + anchor re-derivation + version high-water mark as defenses. Once this lands, the codebase's existing layered-defenses table in `SECURITY.md` needs to be re-evaluated against the new surface, and the design's claims need to be pressure-tested empirically rather than just on paper.
This issue tracks running the `security-review` (and/or `crypto-audit`) Claude skill against the merged address-book code, with focus on the compromised-MCP threat boundary.
Why this is a separate issue, not part of the address-book PR
The implementation PR will include the design's defenses. A clean security audit:
- needs to be run against the merged code, not the in-flight branch (so all integration points with existing tools are visible);
- is independent enough that bundling delays the address-book ship;
- should explicitly red-team the residuals the plan already names — not just verify the happy path the implementer wrote tests for.
Surfaces to audit
Signed-blob integrity (the load-bearing defense)
Anchor re-derivation
Version rollback
Metadata sidecar (unsigned)
Resolver-chain composition (ENS / `.sol` / Bonfida)
Verification-block UX
Tool surface
Failure-path UX
Suggested process
- Wait for the address-book PR to land on `main`.
- Spawn a fresh agent session (separate context, not the implementer's session — independent review).
- Invoke the `security-review` skill against `main` with the address-book commit range.
- Optionally invoke the `crypto-audit` skill for the signing-helper code paths (BIP-137 / EIP-191 / TIP-191 / Sol off-chain-message implementations) — these are the highest-stakes integration points.
- File any findings as separate issues; this issue closes when the audit summary is posted as a comment.
Out of scope
- v1.5 chains (Solana / TRON contacts) — re-audit after they land.
- v2 defense-in-depth (cross-LLM verification, second-device attestation) — deferred to its own audit.
- Taproot BTC contacts — deferred until BIP-322 is in the Ledger BTC app.
Cross-references
Context
The address-book feature (`claude-work/HIGHEST-plan-address-book-merged.md`) introduces a new attack surface that didn't exist before: a persistent, label-keyed address resolver. The plan's threat model already names the core risk —
…and proposes a per-chain signed blob + anchor re-derivation + version high-water mark as defenses. Once this lands, the codebase's existing layered-defenses table in `SECURITY.md` needs to be re-evaluated against the new surface, and the design's claims need to be pressure-tested empirically rather than just on paper.
This issue tracks running the `security-review` (and/or `crypto-audit`) Claude skill against the merged address-book code, with focus on the compromised-MCP threat boundary.
Why this is a separate issue, not part of the address-book PR
The implementation PR will include the design's defenses. A clean security audit:
Surfaces to audit
Signed-blob integrity (the load-bearing defense)
Anchor re-derivation
Version rollback
Metadata sidecar (unsigned)
Resolver-chain composition (ENS / `.sol` / Bonfida)
Verification-block UX
Tool surface
Failure-path UX
Suggested process
Out of scope
Cross-references