Skip to main content
Glama

DollhouseMCP

by DollhouseMCP
SESSION_NOTES_SECURITY_206_COMPLETE.md3.9 kB
# Session Notes - Security Issue #206 Complete **Date**: July 23, 2025 **PR**: #374 - Fix security issue #206: Prevent sensitive path disclosure **Status**: ✅ MERGED ## What We Accomplished ### 1. Completed Security Issue #206 Successfully implemented comprehensive error message sanitization to prevent information disclosure (CWE-209). ### 2. Created SecureErrorHandler Class - Located at: `src/security/errorHandler.ts` - Sanitizes paths, IPs, ports, environment variables - Different modes for production vs development - Pre-compiled regex patterns for performance - Comprehensive error code mapping ### 3. Fixed Error Handling Throughout Codebase Fixed error handling in multiple files: - **index.ts**: 9 error interpolations + 6 error.message usages - **PersonaLoader.ts**: 3 logger.error calls - **pathValidator.ts**: Path exposure in error messages - **PersonaElementManager.ts**: Path exposure in errors - **AgentManager.ts**: File paths in error messages ### 4. Implemented PR Review Recommendations After initial implementation, received excellent review and implemented all suggestions: - **Performance**: Pre-compiled regex patterns - **Coverage**: Added UNC paths, zero-padded IPs, Windows file URLs - **Validation**: Added null/undefined checks - **Logging**: Fixed remaining path exposures with object logging - **Context**: Improved error message descriptiveness ### 5. Comprehensive Testing - Created 25 tests in `test/__tests__/unit/security/errorHandler.test.ts` - Added 4 additional tests for edge cases - All 1429 tests passing - Security audit: 0 findings ## Key Technical Implementation ### SecureErrorHandler Pattern ```typescript // Main usage pattern const sanitized = SecureErrorHandler.sanitizeError(error); logger.error('Operation failed', { error }); throw new Error(sanitized.message); ``` ### Pre-compiled Regex Patterns ```typescript private static readonly SANITIZATION_PATTERNS = { UNIX_PATHS: /\/(?:Users|home|var|etc|opt|usr)\/[^\s]+/gi, WINDOWS_PATHS: /[A-Z]:\\[^\s]+/gi, UNC_PATHS: /\\\\[^\s]+/gi, FILE_URLS: /file:\/\/\/?[^\s]+/gi, IP_ADDRESSES: /\b(?:(?:\d{1,3}\.){3}\d{1,3}|(?:0\d{1,2}\.){3}0\d{1,2})\b/g, // ... etc }; ``` ### Secure Logger Pattern ```typescript // Don't expose paths in logger logger.error('Path access denied', { path: userPath }); // Good // Not: logger.error(`Path access denied: ${userPath}`); // Bad ``` ## Git History - Branch: `fix/security-error-disclosure` - Initial fix: commit 56db283 - Review improvements: commit 1f8d837 - PR #374 merged successfully ## What's Next ### Immediate Priorities 1. **Issue #372**: Create default elements for all types - Create default personas, skills, templates, agents, memories, ensembles - Based on architecture discussion about static vs user-modifiable elements 2. **Element System Improvements** - PR #359 (Ensemble) was ready to merge last session - Check if it's been merged - Continue with element system enhancements 3. **Other Security Issues** - Several security issues remain (#153-159) - Consider prioritizing based on severity ### Context for Next Session - Security issue #206 is COMPLETE ✅ - SecureErrorHandler is implemented and working - All error messages are now sanitized - Ready to move on to other priorities ## Commands to Start Next Session ```bash # Get latest changes git checkout main git pull # Check what's been merged git log --oneline -10 # Check open issues gh issue list --limit 10 --sort created # Check PR #359 status (Ensemble) gh pr view 359 ``` ## Key Achievement Successfully prevented information disclosure through error messages while maintaining debugging capabilities. This was a critical security fix that makes the application much more secure in production environments. --- *Session completed with comprehensive security implementation and all review recommendations addressed.*

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DollhouseMCP/DollhouseMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server