Security Model

Threat model, attack vectors, and security properties of IntentGuard.

Threat Model Summary

IntentGuard addresses 12 attack vectors documented in THREAT-MODEL.md:

IDAttack VectorStatusMitigation
A1Frontend compromiseMitigatedCore design: device separation
A2Mobile device compromiseResidualBiometric auth + SecureStore
A3Replay attackMitigatedPDA closed after verify/revoke
A4Stale intent (expired)MitigatedTTL enforcement (30s–3600s)
A5Cross-app attackMitigatedapp_id in PDA seeds
A6Hash preimageMitigatedSHA-256 (2^256 preimage resistance)
A7Admin key compromiseMitigatedSquads multisig + time lock
A8PDA squattingMitigatedSigner constraint on commit
A9Rent drainMitigatedclose refunds rent to user
A10RPC manipulationResidualFail-closed on RPC error
A11Protocol pause DoSMitigatedRevoke always available; multisig admin
A12TX ordering attackMitigatedhas_one constraint (only owner)

Security Properties

On-Chain Security

Access Control

// Every user instruction requires signer
#[account(mut)]
pub user: Signer<'info>,

// has_one ensures stored user matches signer
#[account(
    has_one = user,
    seeds = [b"intent", user.key().as_ref(), intent_commit.app_id.as_ref()],
    bump = intent_commit.bump,
)]

Admin Protections

Extension Security

Test Coverage

CategoryTestsDescription
On-chain integration29Full flow, access control, TTL, admin
On-chain security4312 attack vectors, edge cases
Trident fuzzing~1M instructions8 flows, 5K iterations, 0 violations
Unit tests (vitest)612SDK, extension, pairing, security

Bug Bounty

SeverityRewardExample
Critical$50,000Fund theft, unauthorized verify
High$10,000Admin bypass, intent manipulation
Medium$2,000Counter corruption, fee drain
Low$500Informational findings

Report: [email protected] — 48hr acknowledgment SLA. See SECURITY.md for full details.