Audit des public Repos auf DSGVO-Risiken, Secrets und Bao-bezogene PII. Erstellt im Zuge des Repo-Root-Aufräumens für Bewerbungspräsentation.
Datei: api/_auth.ts
Zeilen: 15–25
Befund:
const INVITE_MAP: Record<string, ...> = {
'BETA-NGUYEN': { tenantId: 'kanzlei-nguyen', userId: 'nguyen-owner', role: 'owner' },
'BETA-RUBIN': { tenantId: 'kanzlei-rubin', userId: 'rubin-owner', role: 'owner' },
'BETA-WERNER': { tenantId: 'kanzlei-gniosdorz', ... },
'BETA-JASMIN': { tenantId: 'kanzlei-gniosdorz', ... },
...
}Beta-Tokens sind im public Repo sichtbar. Wer den Code liest, kennt alle gültigen Invite-Codes und kann sich bei der Live-Deploy damit einloggen.
Risiko: Mittel — Beta-Konten haben keinen echten Mandantendaten-Zugriff in Produktion, aber die Tokens sollten nicht öffentlich sein.
Empfehlung: Tokens aus Code in Umgebungsvariablen auslagern (GITLAW_BETA_TOKENS=...
als JSON-Map in Vercel env). Vor Launch auf BETA-NGUYEN-Token von Bao informieren/rotieren.
Datei: api/_auth.ts
Zeile: 39
Befund:
function secret(): string {
return process.env.GITLAW_SESSION_SECRET || process.env.OPENAI_API_KEY || 'gitlaw-beta-secret'
}Wenn GITLAW_SESSION_SECRET nicht gesetzt ist, fällt das JWT-Signing auf OPENAI_API_KEY
zurück — und wenn das auch fehlt, auf den Hardcode-String 'gitlaw-beta-secret'.
Risiko: Hoch — Sessions könnten gefälscht werden wenn GITLAW_SESSION_SECRET in Produktion
nicht gesetzt ist.
Empfehlung: GITLAW_SESSION_SECRET als Required-Env-Var setzen (throw statt fallback).
Prüfen ob es in allen Vercel-Environments gesetzt ist.
Datei: viewer/src/pro/welcome-personas.ts
Zeile: 48, 53
Befund:
fullName: 'Bao Nguyen',
personalNote: 'Bao, dein Lastenheft hat den Plan für die nächsten Wochen geprägt...',Vollname und persönliche Note sind im public Repo sichtbar.
Risiko: DSGVO-Grauzone — ob Bao dem öffentlichen Vorkommen seines Namens als Beta-Tester zugestimmt hat, ist unklar.
Empfehlung: Bao fragen ob das ok ist. Falls nicht: fullName → 'Bao N.' oder
den Personas-Eintrag in eine gitignored Datei auslagern.
Grep über alle .ts, .js, .py, .json, .yaml-Dateien ergab:
- Keine hardcodierten
OPENAI_API_KEY=sk-...-Werte - Keine
RESEND_*,UPSTASH_*,JWT_SECRET=-Werte im Code - Alle Secrets werden korrekt als
process.env.*referenziert
Status: OK
Keine echten Namen, Adressen, Geburtsdaten oder Aktenzeichen in Test-Fixtures gefunden.
Demo-Daten verwenden Mustermann/Nguyen-Preset-Daten ohne PII.
Status: OK
Das Repo hat keinen öffentlichen Disclaimer der Art:
"KI-gestützte Antworten ersetzen keine anwaltliche Prüfung."
Empfehlung: LEGAL.md mit diesem Disclaimer anlegen, von Mikel freigeben und mergen.
Alternativ in README.md einfügen.
Ki Datenverarbeitung Kanzlei Arbeitsgrundlage.pdf— liegt im Working Tree, aber ist nicht in Git tracked (.gitignore-Eintrag oder einfach niegit add-ed). Prüfen ob das so bleibt.gitlaw_pro_legal_workflow_automation_v1_crewai-project.zip— ebenfalls untracked.
Empfehlung: Explizit zu .gitignore hinzufügen um versehentliches git add . zu verhindern.
Die heute aus dem Repo-Root entfernten Bao-Dateien (9 Dateien) sind weiterhin in der Git-History vorhanden. Das public GitHub-Repo zeigt sie bei alten Commits.
Empfehlung: BFG-Repo-Cleaner oder git filter-repo laufen lassen um sie aus der History
zu tilgen. Das erfordert einen git push --force auf alle Branches — Mikel entscheidet.
Anleitung: https://rtyley.github.io/bfg-repo-cleaner/