Security updates are provided for the following versions:
| Version | Supported |
|---|---|
| 0.2.x | ✅ |
| < 0.2 | ❌ |
DO NOT create public GitHub issues for security vulnerabilities.
Instead, please report security issues privately by emailing:
security@opencloudtouch.org (replace with actual contact)
You should receive a response within 48 hours. If the issue is confirmed, we will:
- Develop a fix in a private repository
- Release a security patch
- Publish a security advisory
- Credit you in the release notes (if desired)
OpenCloudTouch is designed for trusted local networks only:
- ✅ In-scope: Home LAN, private network
- ❌ Out-of-scope: Public internet, untrusted networks
Assumption: All devices on the LAN are trusted.
OpenCloudTouch does not implement authentication. This is intentional:
- Target use case: Single household/LAN
- SoundTouch devices themselves have no authentication
- Adding auth would complicate local control
Default CORS origins allow local development:
cors_origins:
- "http://localhost:3000"
- "http://localhost:5173"
- "http://localhost:7777"Production: Update config.yaml to restrict origins:
cors_origins:
- "http://truenas.local:7777"
- "http://192.168.1.50:7777"Never use ["*"] in production - this allows any origin to access your API.
Container runs as UID 1000 (non-root):
RUN adduser --disabled-password --gecos '' --uid 1000 octouch
USER octouchRecommended deployment uses read-only root filesystem:
podman run --read-only \
-v /data/oct:/data:rw \
opencloudtouch:latestOnly /data volume needs write access.
- Exposed port: 7777 only (HTTP API + frontend)
- No SSH, no shell access by default
- Minimal base image (python:3.11-slim-bookworm)
- Dependabot: Weekly dependency updates (Mondays 06:00 UTC)
- Trivy: Container vulnerability scanning in CI/CD
- Bandit: Python security linter (pre-commit hook)
All production dependencies are pinned to exact versions:
# requirements.txt
fastapi==0.115.0
uvicorn[standard]==0.32.0This prevents supply-chain attacks via unexpected updates.
API runs on HTTP, not HTTPS.
Mitigation: Use reverse proxy (nginx, Caddy) for TLS termination:
server {
listen 443 ssl;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:7777;
}
}SQLite database has limited concurrent write support.
Impact: Not a security issue but may cause "database locked" errors under heavy load.
Mitigation: Single-user application; acceptable risk.
API has no rate limits.
Impact: Local network DoS possible.
Mitigation: Firewall rules at network level; acceptable for trusted LAN.
Place OpenCloudTouch on IoT VLAN separate from main network:
Main LAN: 192.168.1.0/24
IoT VLAN: 192.168.10.0/24 (SoundTouch devices + OpenCloudTouch)
Restrict access to OpenCloudTouch port:
# Allow only from specific subnet
iptables -A INPUT -p tcp --dport 7777 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 7777 -j DROPEnable Dependabot PRs and monitor for security advisories:
# .github/dependabot.yml (already configured)
version: 2
updates:
- package-ecosystem: "pip"
schedule:
interval: "weekly"Verify image signatures before running:
# Pull from official registry
podman pull ghcr.io/yourorg/opencloudtouch:v0.2.0
# Inspect image for vulnerabilities
podman inspect opencloudtouch:latest | grep "securityopt"We follow industry-standard disclosure timeline:
- Day 0: Vulnerability reported privately
- Day 1-7: Confirmation and triage
- Day 7-30: Develop and test fix
- Day 30: Public disclosure + patch release
Critical vulnerabilities may be expedited.
Before deploying OpenCloudTouch:
- Deploy on trusted LAN only (not internet-facing)
- Update
cors_originsin config.yaml (remove wildcards) - Use reverse proxy with HTTPS if remote access needed
- Enable Dependabot alerts in GitHub repository
- Review container image scan results in CI
- Set firewall rules to restrict port 7777 access
- Use read-only container filesystem
- Keep container image updated (watch GitHub releases)
We thank security researchers who responsibly disclose vulnerabilities.
Hall of Fame: (future researcher credits will appear here)
Last Updated: 2026-02-13
Next Review: 2026-08-13 (6 months)