Skip to content

Security: DevOpsOfChaos/personal-ai-platform

Security

SECURITY.md

Security Policy

Reporting a Vulnerability

Bitte keine öffentlichen Issues für Sicherheitslücken.

Sicherheitsrelevante Probleme bitte vertraulich melden:

  1. Erstelle ein privates Issue im Repository
  2. Oder kontaktiere den Maintainer direkt

Wir antworten innerhalb von 48 Stunden und halten dich über den Fortschritt auf dem Laufenden.

Supported Versions

Version Support
1.x ✅ Aktuell

Eingebaute Sicherheitsmaßnahmen

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 & Secrets

❌ NIEMALS

  • API-Keys in Code oder Config-Dateien hartkodieren
  • .env-Dateien committen
  • Secrets in Logs ausgeben
  • Keys in Screenshots oder öffentlichen Chats teilen

✅ Immer

  • .env wird von .gitignore ignoriert
  • config.example.yaml verwendet ${ENV}-Platzhalter
  • Der Setup-Wizard schreibt Keys direkt in .env
  • Secrets nur über Umgebungsvariablen einlesen
  • Keys werden in Logs automatisch maskiert

Telegram Token

  • Der Bot-Token gibt vollen Zugriff auf deinen Bot
  • Bei Kompromittierung: Token sofort in @BotFather widerrufen (/revoke)
  • Neuen Token generieren und in .env eintragen
  • Bot neu starten
  • User-ID-Validierung: Nur explizit erlaubte Nutzer können mit dem Bot interagieren

OpenRouter API Key

  • 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

Home Assistant Token

  • 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

Daten & Datenschutz

  • 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

Eingabeschutz & Prompt Injection

  • 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

Script-Sandbox

Benutzer-Skripte laufen in einer isolierten Umgebung:

  • Timeout: 30 Sekunden maximal
  • Kein Netzwerk: socket, http, urllib, requests sind 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

Best Practices

# .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

Threat Model

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

There aren't any published security advisories