Skip to main content
Glama
README.mdβ€’14.7 kB
# WireMCP Secure πŸ” ![Version](https://img.shields.io/badge/version-2.0.0-blue.svg) ![Security](https://img.shields.io/badge/security-hardened-green.svg) ![License](https://img.shields.io/badge/license-MIT-blue.svg) **Production-Ready, Security-Hardened MCP Server for Network Traffic Analysis** WireMCP Secure is an enterprise-grade Model Context Protocol (MCP) server that provides Large Language Models with real-time network traffic analysis capabilities through Wireshark's tshark utility. This version addresses all critical security vulnerabilities found in the original WireMCP and adds comprehensive security controls. ## 🎯 What's New in v2.0.0 ### βœ… Security Improvements - **No Command Injection**: Complete rewrite using `spawn()` instead of `exec()` with proper argument handling - **Path Traversal Protection**: Strict whitelisting and validation of file paths - **Input Validation**: Comprehensive validation using Zod schemas for all inputs - **Rate Limiting**: Configurable per-client rate limiting to prevent abuse - **Resource Management**: Concurrent capture limits and size restrictions - **Audit Logging**: Complete audit trail of all operations - **Data Sanitization**: Automatic removal of sensitive data from outputs - **Secure Temp Files**: Cryptographically random filenames in secure directories - **Threat Intelligence**: Cached, validated threat data fetching - **Privilege Awareness**: Clear documentation on privilege requirements ### πŸš€ New Features - **Status Monitoring**: `get_status` tool for real-time server monitoring - **Enhanced Configuration**: Environment-based configuration with validation - **Better Error Handling**: Sanitized error messages that don't leak system info - **LLM Prompts**: Pre-built prompts for common analysis workflows - **Graceful Shutdown**: Proper cleanup and audit log flushing - **Auto-Cleanup**: Automatic cleanup of old temporary files ## πŸ“‹ Features ### Available Tools 1. **`capture_packets`** - Capture live traffic and analyze packet data 2. **`get_summary_stats`** - Get protocol hierarchy statistics 3. **`get_conversations`** - Analyze TCP/UDP conversations 4. **`check_threats`** - Check captured IPs against URLhaus threat intelligence 5. **`check_ip_threats`** - Check a specific IP address for threats 6. **`analyze_pcap`** - Analyze existing PCAP files 7. **`extract_credentials`** - Extract credentials from PCAP (restricted, disabled by default) 8. **`get_status`** - Get server status and rate limit information ### Security Features - βœ… No shell command injection vulnerabilities - βœ… Path traversal protection with directory whitelisting - βœ… Comprehensive input validation - βœ… Rate limiting (5 requests/minute by default) - βœ… Concurrent capture limits (3 by default) - βœ… Output size limits (1MB by default) - βœ… Capture duration limits (60s max by default) - βœ… Audit logging of all operations - βœ… Automatic sensitive data sanitization - βœ… Secure temporary file handling - βœ… TLS certificate validation for external APIs - βœ… Timeout protection - βœ… Memory exhaustion protection ## πŸ”§ Installation ### Prerequisites 1. **Wireshark/tshark** - Must be installed and accessible ```bash # macOS brew install wireshark # Ubuntu/Debian sudo apt-get install tshark # Windows # Download from https://www.wireshark.org/download.html ``` 2. **Node.js** - Version 16 or higher ```bash node --version # Should be >= 16.0.0 ``` 3. **Elevated Privileges** - Required for packet capture ```bash # Option 1: Run as root (not recommended) sudo node index.js # Option 2: Grant capabilities (Linux only, recommended) sudo setcap cap_net_raw,cap_net_admin=eip $(which node) sudo setcap cap_net_raw,cap_net_admin=eip $(which tshark) ``` ### Setup 1. **Clone or download the repository** ```bash cd /path/to/WireMCP-Secure ``` 2. **Install dependencies** ```bash npm install ``` 3. **Configure environment** (optional) ```bash cp env.example.txt .env # Edit .env with your settings ``` 4. **Create required directories** ```bash mkdir -p ~/wiremcp/pcaps mkdir -p /tmp/wiremcp chmod 700 /tmp/wiremcp ``` 5. **Test installation** ```bash node index.js # Should start without errors ``` ## βš™οΈ Configuration Configuration is done via environment variables. Create a `.env` file (copy from `env.example.txt`): ### Security Settings ```bash # Maximum capture duration (seconds) MAX_CAPTURE_DURATION=60 # Maximum file size for captures (bytes) MAX_CAPTURE_SIZE=104857600 # 100MB # Maximum output size (bytes) MAX_OUTPUT_SIZE=1048576 # 1MB ``` ### Rate Limiting ```bash # Enable rate limiting RATE_LIMIT_ENABLED=true # Max requests per window RATE_LIMIT_MAX=5 # Time window in milliseconds RATE_LIMIT_WINDOW_MS=60000 # 1 minute # Max concurrent captures MAX_CONCURRENT_CAPTURES=3 ``` ### Network Settings ```bash # Allowed network interfaces (comma-separated, empty = all) ALLOWED_INTERFACES=en0,eth0 # Default interface DEFAULT_INTERFACE=en0 ``` ### File Access ```bash # Allowed directories for PCAP files (comma-separated) ALLOWED_PCAP_DIRS=/tmp/wiremcp,/home/user/wiremcp/pcaps # Temporary directory TEMP_DIR=/tmp/wiremcp ``` ### Audit Logging ```bash # Enable audit logging AUDIT_ENABLED=true # Audit log file path AUDIT_LOG_FILE=/tmp/wiremcp-audit.log ``` ### Restricted Features ```bash # Enable credential extraction (USE WITH CAUTION) ENABLE_CREDENTIAL_EXTRACTION=false # Enable data sanitization SANITIZE_DATA=true ``` ## πŸš€ Usage ### With Claude Desktop (MCP Client) Add to your MCP configuration file: **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` ```json { "mcpServers": { "wiremcp-secure": { "command": "node", "args": [ "/absolute/path/to/WireMCP-Secure/index.js" ], "env": { "NODE_ENV": "production", "RATE_LIMIT_ENABLED": "true", "AUDIT_ENABLED": "true" } } } } ``` ### With Cursor Edit `mcp.json` in Cursor -> Settings -> MCP: ```json { "mcpServers": { "wiremcp-secure": { "command": "node", "args": [ "/absolute/path/to/WireMCP-Secure/index.js" ] } } } ``` ### Standalone Testing ```bash # Start the server node index.js # The server communicates via stdio, so you'll need an MCP client # For testing, use the MCP Inspector or a compatible client ``` ## πŸ“– Tool Examples ### Capture and Analyze Traffic ```javascript // Using capture_packets tool { "interface": "en0", "duration": 10 } ``` ### Check IP for Threats ```javascript // Using check_ip_threats tool { "ip": "192.168.1.100" } ``` ### Analyze PCAP File ```javascript // Using analyze_pcap tool { "pcapPath": "/tmp/wiremcp/capture.pcap", "includeUrls": true, "includeProtocols": true } ``` ### Check Server Status ```javascript // Using get_status tool {} // No parameters needed ``` ## πŸ” Security Best Practices ### Deployment 1. **Run with Minimum Privileges** ```bash # Linux: Use capabilities instead of root sudo setcap cap_net_raw,cap_net_admin=eip $(which node) ``` 2. **Restrict File Access** - Set `ALLOWED_PCAP_DIRS` to specific directories only - Use secure permissions on temp directories (700) 3. **Enable Audit Logging** - Always enable in production: `AUDIT_ENABLED=true` - Monitor audit logs regularly - Rotate logs periodically 4. **Configure Rate Limits** - Adjust based on your use case - Lower limits for public-facing deployments - Monitor rate limit violations 5. **Disable Dangerous Features** - Keep `ENABLE_CREDENTIAL_EXTRACTION=false` unless specifically needed - Document and log any changes to security settings ### Network Isolation For production deployments, consider: ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ MCP Client β”‚ β”‚ (Trusted LLM) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ stdio β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ WireMCP Secure β”‚ β”‚ (Unprivileged) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ IPC/Socket β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Capture Service β”‚ β”‚ (Privileged) β”‚ β”‚ Isolated VLAN β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### Compliance - **GDPR**: Configure `SANITIZE_DATA=true` to remove personal data - **PCI-DSS**: Use audit logging and restrict credential extraction - **HIPAA**: Ensure PHI is not captured or is properly sanitized - **SOC 2**: Enable all audit features and implement access controls ## πŸ“Š Monitoring ### Audit Log Format Audit logs are written as JSON lines to the configured log file: ```json { "timestamp": "2025-12-13T10:30:45.123Z", "action": "TOOL_EXECUTION", "resource": "capture_packets", "userId": "client-abc123", "severity": "info", "details": { "arguments": {"interface": "en0", "duration": 5}, "durationMs": 5234, "success": true }, "pid": 12345 } ``` ### Important Events - `TOOL_EXECUTION` - Successful tool execution - `TOOL_ERROR` - Tool execution error - `SECURITY_EVENT` - Security-related event (threats detected, etc.) - `RATE_LIMIT_VIOLATION` - Rate limit exceeded - `CREDENTIAL_EXTRACTION` - Credential extraction performed (high severity) - `SYSTEM` - System events (startup, shutdown) ### Monitoring Commands ```bash # Watch audit log in real-time tail -f /tmp/wiremcp-audit.log | jq . # Count operations by type cat /tmp/wiremcp-audit.log | jq -r .action | sort | uniq -c # Find all security events cat /tmp/wiremcp-audit.log | jq 'select(.action=="SECURITY_EVENT")' # Find rate limit violations cat /tmp/wiremcp-audit.log | jq 'select(.action=="RATE_LIMIT_VIOLATION")' ``` ## πŸ› Troubleshooting ### tshark not found ```bash # Check if tshark is installed which tshark # If not installed, install Wireshark # macOS brew install wireshark # Linux sudo apt-get install tshark ``` ### Permission Denied ```bash # Check permissions ls -l $(which tshark) # Grant capabilities (Linux) sudo setcap cap_net_raw,cap_net_admin=eip $(which tshark) # Or run as root (not recommended for production) sudo node index.js ``` ### Rate Limit Errors ```bash # Check current status # Use the get_status tool to see rate limit status # Adjust limits in .env RATE_LIMIT_MAX=10 # Increase limit ``` ### Path Access Denied ```bash # Ensure PCAP file is in allowed directory # Check ALLOWED_PCAP_DIRS setting # Create allowed directory mkdir -p ~/wiremcp/pcaps ``` ### Memory Issues ```bash # Reduce output size limit MAX_OUTPUT_SIZE=524288 # 512KB # Reduce capture duration MAX_CAPTURE_DURATION=30 # 30 seconds ``` ## πŸ§ͺ Testing ### Run Security Checks ```bash # Check for vulnerable dependencies npm audit # Check for outdated packages npm outdated # Run linter with security rules npx eslint . --ext .js ``` ### Manual Testing ```bash # Test with short capture # In your MCP client: # capture_packets(interface="en0", duration=5) # Test rate limiting # Make 6 requests quickly - 6th should fail # Test path validation # Try to analyze a file outside allowed directories - should fail # Test input validation # Try invalid interface name "en0; rm -rf /" - should fail ``` ## πŸ“š API Reference ### Tool: capture_packets Captures live network traffic and returns packet data. **Parameters:** - `interface` (string, optional): Network interface (default: en0) - `duration` (number, optional): Capture duration in seconds (1-60, default: 5) **Returns:** Packet data as JSON **Example:** ```json { "interface": "en0", "duration": 10 } ``` ### Tool: check_threats Captures traffic and checks IPs against threat intelligence. **Parameters:** - `interface` (string, optional): Network interface - `duration` (number, optional): Capture duration **Returns:** List of IPs and threat check results ### Tool: analyze_pcap Analyzes an existing PCAP file. **Parameters:** - `pcapPath` (string, required): Path to PCAP file - `includeUrls` (boolean, optional): Extract URLs (default: true) - `includeProtocols` (boolean, optional): List protocols (default: true) **Returns:** Analysis results with IPs, URLs, protocols, and packet data ### Tool: get_status Gets server status and configuration. **Parameters:** None **Returns:** Server status, rate limits, and security settings ## 🀝 Contributing Contributions are welcome! Please follow these guidelines: 1. **Security First**: Never introduce security vulnerabilities 2. **Test Thoroughly**: Include tests for new features 3. **Document**: Update README and inline documentation 4. **Follow Style**: Use ESLint configuration provided 5. **Audit Impact**: Consider audit logging for new features ### Reporting Security Issues **DO NOT** open public issues for security vulnerabilities. Email security concerns to: [anishphilip012@live.in] ## πŸ“„ License MIT License - See LICENSE file for details ## πŸ™ Acknowledgments - Original WireMCP by 0xKoda - Wireshark/tshark team for excellent packet analysis tools - Model Context Protocol community - URLhaus for threat intelligence data ## πŸ“ž Support - **Issues**: https://github.com/yourusername/wiremcp-secure/issues - **Discussions**: https://github.com/yourusername/wiremcp-secure/discussions - **Documentation**: https://github.com/yourusername/wiremcp-secure/wiki ## πŸ—ΊοΈ Roadmap ### v2.1.0 (Planned) - [ ] Authentication and user management - [ ] Multiple threat intelligence sources - [ ] Web dashboard for monitoring - [ ] Docker containerization - [ ] Kubernetes deployment examples ### v2.2.0 (Planned) - [ ] Distributed capture support - [ ] Real-time streaming analysis - [ ] Machine learning anomaly detection - [ ] Custom protocol analyzers - [ ] GraphQL API ## βš–οΈ Security Assessment **Security Rating: 9/10** βœ… This version has been thoroughly reviewed and addresses: - βœ… All OWASP Top 10 vulnerabilities - βœ… CWE Top 25 software weaknesses - βœ… Input validation and sanitization - βœ… Authentication and authorization (configurability) - βœ… Secure communications - βœ… Error handling and logging - βœ… Data protection - βœ… Rate limiting and DoS protection **Remaining Considerations:** - User authentication (if multi-user) - Network-level access controls - Hardware security module integration (if needed) --- **Built with security in mind. Deploy with confidence.** πŸ”’ **Inspired By/Shout out to:** - [WireMCP](https://github.com/0xKoda/WireMCP)

Latest Blog Posts

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/anishphilip012git/WireMCP-Secure'

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