mirror of
https://github.com/samvallad33/vestige.git
synced 2026-05-06 06:12:37 +02:00
76 lines
2.1 KiB
Markdown
76 lines
2.1 KiB
Markdown
|
|
# Security Policy
|
||
|
|
|
||
|
|
## Supported Versions
|
||
|
|
|
||
|
|
| Version | Supported |
|
||
|
|
| ------- | ------------------ |
|
||
|
|
| 1.0.x | :white_check_mark: |
|
||
|
|
|
||
|
|
## Reporting a Vulnerability
|
||
|
|
|
||
|
|
If you discover a security vulnerability in Vestige, please report it responsibly:
|
||
|
|
|
||
|
|
1. **DO NOT** open a public GitHub issue
|
||
|
|
2. Email the maintainer directly (see GitHub profile)
|
||
|
|
3. Include:
|
||
|
|
- Description of the vulnerability
|
||
|
|
- Steps to reproduce
|
||
|
|
- Potential impact
|
||
|
|
- Suggested fix (if any)
|
||
|
|
|
||
|
|
You can expect a response within 48 hours.
|
||
|
|
|
||
|
|
## Security Model
|
||
|
|
|
||
|
|
### Trust Boundaries
|
||
|
|
|
||
|
|
Vestige is a **local MCP server** designed to run on your machine with your user permissions:
|
||
|
|
|
||
|
|
- **Trusted**: The MCP client (Claude Code/Desktop) that connects via stdio
|
||
|
|
- **Untrusted**: Content passed through MCP tool arguments (validated before use)
|
||
|
|
|
||
|
|
### What Vestige Does NOT Do
|
||
|
|
|
||
|
|
- ❌ Make network requests (except first-run model download from Hugging Face)
|
||
|
|
- ❌ Execute shell commands
|
||
|
|
- ❌ Access files outside its data directory
|
||
|
|
- ❌ Send telemetry or analytics
|
||
|
|
- ❌ Phone home to any server
|
||
|
|
|
||
|
|
### Data Storage
|
||
|
|
|
||
|
|
All data is stored locally in SQLite:
|
||
|
|
|
||
|
|
| Platform | Location |
|
||
|
|
|----------|----------|
|
||
|
|
| macOS | `~/Library/Application Support/com.vestige.core/vestige.db` |
|
||
|
|
| Linux | `~/.local/share/vestige/core/vestige.db` |
|
||
|
|
| Windows | `%APPDATA%\vestige\core\vestige.db` |
|
||
|
|
|
||
|
|
**Note**: Data is stored in plaintext. If you need encryption at rest, use OS-level encryption (FileVault, BitLocker, LUKS).
|
||
|
|
|
||
|
|
### Input Validation
|
||
|
|
|
||
|
|
All MCP tool inputs are validated:
|
||
|
|
|
||
|
|
- Content size limit: 1MB max
|
||
|
|
- Query length limit: 1000 characters
|
||
|
|
- FTS5 queries are sanitized to prevent injection
|
||
|
|
- All SQL uses parameterized queries (`params![]` macro)
|
||
|
|
|
||
|
|
### Dependencies
|
||
|
|
|
||
|
|
We use well-maintained dependencies and run `cargo audit` regularly. Current status:
|
||
|
|
|
||
|
|
- **Vulnerabilities**: 0
|
||
|
|
- **Warnings**: 2 (unmaintained transitive dependencies with no known CVEs)
|
||
|
|
|
||
|
|
## Security Checklist
|
||
|
|
|
||
|
|
- [x] No hardcoded secrets
|
||
|
|
- [x] Parameterized SQL queries
|
||
|
|
- [x] Input validation on all tools
|
||
|
|
- [x] No command injection vectors
|
||
|
|
- [x] No unsafe Rust code
|
||
|
|
- [x] Dependencies audited
|