generated from MetaMask/metamask-module-template
-
Notifications
You must be signed in to change notification settings - Fork 7
Open
Labels
ocap-enhancementOCAP Kernel enhancementOCAP Kernel enhancement
Description
Overview
The remote communications system needs rate limiting to protect against message and connection flooding attacks.
Note: PR #714 implemented resource limits for capacity (concurrent connections, message size, queue depth). This issue now tracks the remaining rate-based limits.
What's Already Implemented (PR #714)
- ✅ 100 concurrent connections limit (
maxConcurrentConnections) - ✅ 1MB message size limit (
maxMessageSizeBytes) - ✅ Message queuing with 200 capacity (
maxQueue) - ✅ Stale peer cleanup (1 hour timeout)
Remaining Work
1. Message Rate Limiting
- Requirement: 100 messages per second per peer (sliding 1-second window)
- Behavior: Queue excess messages up to capacity, then drop with error logging
- Implementation: Track per-peer message counts with sliding windows, validate rates before sending
2. Connection Attempt Rate Limiting
- Requirement: 10 connection attempts per minute per peer
- Behavior: Reject connection attempts that exceed the rate limit
- Implementation: Log connection attempt timestamps per peer, validate before dialing
Implementation Approach
- Create a
SlidingWindowRateLimiterclass for tracking message rates - Add per-peer connection attempt tracking
- Integrate rate checks into
sendRemoteMessage()and dial logic - Add error logging when messages are dropped due to rate limits
Acceptance Criteria
- Message rate limiting enforced at 100 msg/sec per peer
- Connection attempt rate limiting enforced at 10 attempts/min per peer
- Error logging when messages are dropped due to rate limits
- Unit tests verify enforcement of both rate limits
- Tests confirm proper queueing behavior when approaching limits
Metadata
Metadata
Assignees
Labels
ocap-enhancementOCAP Kernel enhancementOCAP Kernel enhancement