Scope
This document describes Crosslink’s threat model: what attacks are in scope, how they’re mitigated, and what responsibilities remain with the application.
Trust boundary
Threats in scope
Network attacks
Device attacks
Protocol attacks
Threats out of scope
Application-layer attacks
Device attacks
Advanced attacks
Capability system
Crosslink’s capability system is a transport-layer primitive, not a full authorization framework:
What capabilities do
- Declare what operations a client can request
- Let the host approve/deny during pairing
- Persist the granted set for the session
- Provide a human-readable description for user consent
What capabilities don’t do
- Implement rate limiting
- Enforce time-based restrictions (use TTLs)
- Prevent abuse by a compromised client
- Replace application-layer authorization
A compromised client with a valid capability token can call that capability as many times as it wants. Your application must implement rate limiting and abuse detection independently.
Security recommendations
For host applications
- Validate all RPC inputs — Don’t trust the client
- Implement rate limiting — Prevent abuse of granted capabilities
- Log security events — Pairing, capability grants, errors
- Use OS keychain — Don’t store secrets in plaintext files
- Review pairing requests — Show SAS and capabilities to the user
- Rotate pairing codes — Generate new codes regularly
- Monitor connections — Detect anomalous patterns
For client applications
- Use
CrosslinkClient.create() — Encrypted storage at rest
- Verify SAS — Never skip the verification step
- Review capabilities — Don’t approve capabilities you don’t need
- Handle errors gracefully — Don’t leak information in error messages
- Secure your domain — HTTPS is required for WebCrypto
For deployments
- HTTPS everywhere — Signaling and relay must use TLS
- Network isolation — Run services in a DMZ if possible
- Access logs — Monitor who pairs with what
- Regular updates — Keep the SDK updated
- Backup identity keys — If you lose them, paired devices can’t reconnect