Bitte keine öffentlichen Issues für Sicherheitslücken.
Sicherheitsrelevante Probleme bitte vertraulich melden:
- Erstelle ein privates Issue im Repository
- Oder kontaktiere den Maintainer direkt
Wir antworten innerhalb von 48 Stunden und halten dich über den Fortschritt auf dem Laufenden.
| Version | Support |
|---|---|
| 1.x | ✅ Aktuell |
| Schutzebene | Maßnahme |
|---|---|
| Input | Control-Char-Stripping, 4000-Zeichen-Limit, PII-Erkennung |
| Prompt | Injection-Detection (11 Patterns), System/User-Trennung |
| API | Key-Masking, Rate-Limits (30/50/10), Timeouts |
| URLs | SSRF-Prevention, Private-IP-Block, File-Protocol-Block |
| Scripts | Sandbox (Timeout, No-Network, Path-Restriction) |
| Daten | Feature-Gates, Data-Boundaries, Audit-Log, No-Logs-Mode |
| Fehler | Sanitized Error-Messages, Keine Stack-Traces an User |
- API-Keys in Code oder Config-Dateien hartkodieren
.env-Dateien committen- Secrets in Logs ausgeben
- Keys in Screenshots oder öffentlichen Chats teilen
.envwird von.gitignoreignoriertconfig.example.yamlverwendet${ENV}-Platzhalter- Der Setup-Wizard schreibt Keys direkt in
.env - Secrets nur über Umgebungsvariablen einlesen
- Keys werden in Logs automatisch maskiert
- Der Bot-Token gibt vollen Zugriff auf deinen Bot
- Bei Kompromittierung: Token sofort in @BotFather widerrufen (
/revoke) - Neuen Token generieren und in
.enveintragen - Bot neu starten
- User-ID-Validierung: Nur explizit erlaubte Nutzer können mit dem Bot interagieren
- Der Key wird für alle LLM-Aufrufe verwendet
- Bei Verdacht auf Kompromittierung: Key auf openrouter.ai/keys löschen und neuen erstellen
- OpenRouter zeigt Token-Verbrauch in Echtzeit — ungewöhnliche Aktivität sofort sichtbar
- Rate-Limiting schützt vor Kosten-Explosion: 50 LLM-Calls/h
- Long-Lived Access Token in Home Assistant erstellen:
Profil → Sicherheit → Long-Lived Access Tokens - Token bei Verdacht löschen und neuen erstellen
- Niemals den Token in HA-Automationen oder Dashboards anzeigen
- HACS speichert Keys in HA's verschlüsseltem Storage
- Alle Daten liegen lokal in einer SQLite-Datenbank (
data/agent.db) - Keine Cloud-Synchronisation, kein externer Datenzugriff
- Persönliche Daten (Gesundheit, Gewohnheiten, Kalender) werden nicht an Dritte übertragen
- LLM-Aufrufe via OpenRouter: Nur die jeweilige Konversation wird gesendet, kein Datenbank-Zugriff
- No-Logs Mode: Konversationen werden nicht gespeichert (konfigurierbar)
- Local Mode: Alle externen APIs deaktivierbar
- Control-Char-Stripping: Alle Steuerzeichen (0x00-0x1F, 0x7F) werden aus Eingaben entfernt
- Zeichenlimit: Eingaben werden auf 4000 Zeichen begrenzt
- Prompt-Injection-Detection: 11 Regex-Patterns erkennen und blocken:
- System-Prompt-Überschreibungen ("ignore all previous", "you are now", etc.)
- Role-Play-Angriffe
- Code-Injection-Versuche
- PII-Detection (Kreditkartennummern, IBAN, etc.)
- SSRF-Prevention: Alle URLs aus Nutzereingaben werden validiert:
- Keine privaten IPs (10.x, 172.16.x, 192.168.x, 127.x, ::1)
- Keine file:// oder localhost-URLs
- Keine DNS-Rebinding-Angriffe
Benutzer-Skripte laufen in einer isolierten Umgebung:
- Timeout: 30 Sekunden maximal
- Kein Netzwerk:
socket,http,urllib,requestssind blockiert - Erlaubte Module: Nur explizit freigegebene Python-Standardbibliotheken (
math,json,datetime,collections,itertools,re,random,statistics,textwrap) - Dateizugriff: Nur lesend und schreibend im
data/-Verzeichnis - Ressourcen-Limits: Maximaler Speicherverbrauch und Rekursionstiefe werden begrenzt
# .env Berechtigungen einschränken (Linux/Mac)
chmod 600 .env
# Secrets in Git history prüfen
git log --all --full-history -- .env
# Falls Secrets jemals committed wurden:
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch .env" \
--prune-empty --tag-name-filter cat -- --all| Bedrohung | Maßnahme |
|---|---|
| Prompt Injection | 11 Regex-Patterns + System/User-Trennung |
| SSRF via URLs | Private-IP-Block, File-Protocol-Block |
| API-Key-Leak | Key-Masking in Logs, .env-Schutz |
| Kosten-Explosion | Rate-Limiting (50 LLM-Calls/h) |
| Datenschutzverletzung | Data Boundaries, No-Logs Mode, Lokale DB |
| Script-Missbrauch | Sandbox mit Timeout/No-Network/Path-Restriction |
| Stack-Trace-Leak | Sanitized Error-Messages |
| Unauthorisierter Zugriff | User-ID-Validierung, First-Run-Lockdown |