| Version | Supported |
|---|---|
| 0.1.x | ✅ |
If you discover a security vulnerability in NeonShell, please report it responsibly:
- Do not open a public GitHub issue
- Email security@neonshell.dev (replace with your actual security email)
- Include as much detail as possible:
- Description of the vulnerability
- Steps to reproduce
- Potential impact
- Suggested fix (if any)
We will acknowledge receipt within 48 hours and provide a detailed response within 7 days.
NeonShell handles sensitive information including SSH credentials and private keys. Our security model addresses the following threats:
| Threat | Mitigation |
|---|---|
| Private key theft | Keys stored encrypted in OS keychain (macOS Keychain, Windows Credential Manager, Linux Secret Service). Never stored in plaintext on disk. |
| Credential logging | All secrets are filtered from logs. Debug output is sanitized. Secret values are never included in error messages. |
| Memory disclosure | Rust's memory safety prevents buffer overflows. Secrets are zeroed after use where possible. |
| Malicious plugins | Plugins run in a sandboxed environment with explicit permission grants. Users are warned about unsigned plugins. |
| Malicious scripts | Python scripts run in a separate subprocess with limited IPC capabilities. Scripts must request permissions. |
| Man-in-the-middle | Strict known_hosts policy by default. Clear fingerprint UI. Certificate pinning supported. |
| Local privilege escalation | Minimal use of elevated privileges. All sensitive operations go through OS security APIs. |
┌─────────────────────────────────────────────────────────────┐
│ USER INPUT │
│ (passwords, private keys, passphrases) │
└────────────────────────────┬────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ NEONSHELL APP │
│ - Secrets held only in memory during use │
│ - Never written to logs or disk │
│ - Zeroed after authentication completes │
└────────────────────────────┬────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ OS KEYCHAIN │
│ macOS: Keychain Services │
│ Windows: Credential Manager │
│ Linux: libsecret (Secret Service API) │
│ │
│ - Encrypted at rest by OS │
│ - Access controlled by OS security │
│ - Survives app reinstallation │
└─────────────────────────────────────────────────────────────┘
NeonShell implements strict known_hosts handling:
- Strict (default): Reject connections to unknown hosts. Alert on fingerprint changes.
- Ask: Prompt user to verify fingerprint for unknown hosts.
- Accept: Auto-accept new hosts (not recommended).
When a host key changes, NeonShell will:
- Show a prominent warning with old and new fingerprints
- Require explicit user confirmation to proceed
- Log the event (without the key itself)
Plugins are sandboxed with the following controls:
- Permission System: Plugins must declare required permissions in manifest
- User Approval: Users must approve permissions before plugin activation
- Capability Restriction: Plugins can only access APIs matching their permissions
- Signature Verification: Optional plugin signing with warnings for unsigned plugins
Available permissions:
network: Make HTTP requestsfilesystem: Read/write to plugin data directory onlyclipboard: Read/write clipboardnotifications: Show system notificationsterminal: Read terminal outputshell: Execute shell commands (dangerous)
Python scripts run in a separate subprocess:
- Scripts communicate via JSON-RPC over stdin/stdout
- Limited API surface exposed through the
neonshellmodule - No direct access to keychain or raw SSH sessions
- Scripts can be enabled/disabled per-profile
NeonShell logs are designed to aid debugging without exposing secrets:
Never logged:
- Passwords
- Private key contents
- Passphrases
- Authentication tokens
- Session cookies
Always logged (if debug enabled):
- Connection attempts (host, port, username)
- Authentication method used (not credentials)
- Session lifecycle events
- Plugin/script activation
- Error messages (sanitized)
NeonShell maintains an audit log of security-relevant events:
- Connection attempts and results
- Known hosts changes
- Keychain access
- Plugin permission grants
- Script executions
- Use SSH Agent: Prefer ssh-agent over storing keys directly
- Enable 2FA: Use hardware keys or TOTP where possible
- Verify Fingerprints: Always verify host fingerprints on first connect
- Review Plugins: Only install plugins from trusted sources
- Review Scripts: Understand what scripts do before enabling them
- Keep Updated: Install security updates promptly
- Lock Screen: Enable auto-lock to protect sessions when away
We follow responsible disclosure practices:
- Report received and acknowledged (48 hours)
- Vulnerability confirmed and assessed (7 days)
- Fix developed and tested (varies by severity)
- Security advisory published with fix
- CVE assigned if applicable
Security updates are released as soon as possible after a fix is ready:
- Critical: Immediate patch release
- High: Within 7 days
- Medium: Next scheduled release
- Low: Backlog for future release
For security concerns: security@neonshell.dev
For general questions: Open a GitHub discussion