# n8n Security Update: 1.123.5 → 2.3.4 ## Executive Summary **Kritikalität:** Hoch - CVE-2025-68668 (CVSS 9.9) ist nur in 2.0.0+ gefixt **Downtime:** ~5-10 Minuten (PostgreSQL Auto-Migration + Container Rebuild) **Risiko:** Niedrig - keine Breaking Changes in Workflows gefunden **Ziel-Version:** 2.3.4 (aktuelle Stable, nicht 2.0.0 wegen Bug-Fixes) --- ## Sicherheitsrisiko-Bewertung ### Status der 4 CVEs in aktueller Version 1.123.5 | CVE | CVSS | Status in 1.123.5 | Risiko | |-----|------|-------------------|--------| | **CVE-2026-21858** "Ni8mare" | 10.0 | ✅ GEFIXT (1.121.0) | Unauthenticated RCE über Webhooks | | **CVE-2026-21877** | 10.0 | ✅ GEFIXT (1.121.3) | Authenticated RCE via Git Node | | **CVE-2025-68613** | 10.0 | ✅ GEFIXT (1.122.0) | Authenticated Expression Injection | | **CVE-2025-68668** | 9.9 | ❌ **NICHT GEFIXT** | Python Sandbox Bypass → RCE | **Fazit:** CVE-2025-68668 erfordert zwingend Update auf 2.0.0+ --- ## Breaking Changes Analyse ### ✅ Keine kritischen Breaking Changes - **Start Nodes:** Nicht verwendet (alle Workflows nutzen manualTrigger/cron/emailReadImap) - **Code Nodes:** Kein `process.env` Zugriff (N8N_BLOCK_ENV_ACCESS_IN_NODE=true ist ab 2.0 default) - **Python Code Nodes:** Nicht verwendet (nur JavaScript Code Nodes) - **Binary Data Mode:** Keine deprecated Configs ### ⚠️ Funktionstest erforderlich **3 Workflows mit LangChain/OpenAI Integration:** - `gebuehrenfrei_live.json` - `instabank_current.json` - `tfbank_current.json` **Verwendung:** AI-gestützte Extraktion von Zahlungsinformationen (Fälligkeitsdatum, IBAN, BIC, Betrag) **Nodes:** - `@n8n/n8n-nodes-langchain.agent` (v1.1) - `@n8n/n8n-nodes-langchain.lmChatOpenAi` (v1) - `@n8n/n8n-nodes-langchain.memoryBufferWindow` (v1) **Aktion:** Nach Update AI-Extraktion manuell testen --- ## Update-Plan ### Phase 1: Pre-Update Backup **Kritisch:** PostgreSQL-Datenbank enthält alle Workflows, Credentials, Execution History ```bash # 1. Auf srvdocker02 per SSH ssh root@10.0.0.48 # 2. PostgreSQL Backup erstellen cd /home/icke/n8n docker exec postgres-n8n pg_dump -U n8n n8n > "backup-$(date +%Y%m%d-%H%M%S).sql" # 3. Backup komprimieren und sichern gzip backup-*.sql ls -lh backup-*.sql.gz # 4. Optional: Volume-Backup (enthält auch n8n-Files) tar -czf "n8n-volumes-$(date +%Y%m%d-%H%M%S).tar.gz" /home/icke/n8n_pg/ ``` **Backup-Dateien auf Laptop kopieren (Sicherheitskopie):** ```bash # Von Laptop aus scp root@10.0.0.48:/home/icke/n8n/backup-*.sql.gz ~/Nextcloud/egonetix/n8n/backups/ ``` --- ### Phase 2: Update durchführen **Datei:** `/home/rwiegand/Nextcloud/egonetix/n8n/Dockerfile.n8n-curl` **Änderung:** ```dockerfile # Alt: FROM n8nio/n8n:1.123.5 # Neu: FROM n8nio/n8n:2.3.4 ``` **Rebuild + Restart:** ```bash # Auf srvdocker02 cd /home/icke/n8n # Container stoppen docker compose down # Rebuild mit neuer Version (dauert ~2-3 Minuten) docker compose up -d --build # Logs überwachen (PostgreSQL Auto-Migration) docker compose logs -f n8n-new ``` **Erwartete Log-Ausgaben:** - `Running migrations...` (PostgreSQL Schema-Migration) - `Migration XYZ successful` - `n8n ready on 0.0.0.0:5678` **Abbruchkriterium:** Wenn Fehler in Logs → sofort `docker compose down` und Rollback --- ### Phase 3: Verifikation #### 3.1 Web-UI Zugriff prüfen ```bash # Von Laptop curl -I https://flow.egonetix.de/ # Erwartung: HTTP 200 oder 302 (Redirect zu Login) ``` **Browser-Test:** - https://flow.egonetix.de/ öffnen - Login mit Owner-Account - Dashboard sollte laden #### 3.2 Workflows prüfen **In Web-UI:** 1. Workflows-Liste öffnen 2. Status der aktiven Workflows prüfen: - `gebuehrenfrei_live` → aktiv? - `instabank_current` → aktiv? - `tfbank_current` → aktiv? #### 3.3 LangChain/OpenAI Integration testen **Pro Workflow (gebuehrenfrei_live, instabank_current, tfbank_current):** 1. Workflow öffnen in Editor 2. "Execute Workflow" klicken (manueller Trigger) 3. **Input:** Test-E-Mail mit Kreditkarten-Rechnung 4. **Erwartete Ausgabe:** - AI Agent extrahiert: Fälligkeitsdatum, IBAN, BIC, Betrag - Nextcloud Deck Karte wird erstellt (`/home/node/create_card_from_ai.sh`) 5. **Logs prüfen:** ```bash docker compose logs n8n-new | grep -i "openai\|langchain\|error" ``` **Falls AI-Extraktion fehlschlägt:** - Workflow-Logs in Web-UI prüfen - OpenAI API-Key noch gültig? (in Workflow Credentials) - Rate Limits überschritten? #### 3.4 IMAP-Trigger testen **Workflows mit Email-Trigger:** - Warten auf nächste eingehende Kreditkarten-E-Mail - Oder: Manuell Test-E-Mail an IMAP-Account senden - Prüfen ob Workflow automatisch triggert #### 3.5 Version bestätigen ```bash # In Container docker exec n8n-new n8n --version # Erwartung: 2.3.4 ``` **In Web-UI:** - Settings → About → Version sollte "2.3.4" zeigen --- ### Phase 4: Rollback (falls nötig) **Nur wenn kritische Fehler auftreten:** ```bash # 1. Container stoppen cd /home/icke/n8n docker compose down # 2. Dockerfile zurücksetzen # In /home/rwiegand/Nextcloud/egonetix/n8n/Dockerfile.n8n-curl: FROM n8nio/n8n:1.123.5 # 3. Rebuild mit alter Version docker compose up -d --build # 4. Falls DB korrupt: Backup einspielen docker exec -i postgres-n8n psql -U n8n n8n < backup-TIMESTAMP.sql ``` **Wichtig:** Rollback nur bis max. 1 Stunde nach Update - danach könnten neue Workflows/Executions verloren gehen! --- ## Post-Update Maßnahmen ### Dokumentation aktualisieren **Datei:** `/home/rwiegand/Nextcloud/egonetix/n8n/README.md` **Abschnitt "Upgrade n8n" aktualisieren:** ```markdown ### Upgrade n8n Edit `Dockerfile.n8n-curl` and change version: ```dockerfile FROM n8nio/n8n:2.3.4 # Change version here (aktuell: 2.3.4, Stand: 2026-02-04) ``` Then rebuild: ```bash docker compose up -d --build ``` **Hinweis:** Breaking Changes zwischen 1.x und 2.x beachten: - Start Nodes entfernt (verwende manualTrigger stattdessen) - Python Sandbox sicherer (CVE-2025-68668 gefixt) - PostgreSQL Schema-Migration läuft automatisch (Backup vorher!) ``` ### Infrastructure-Dokumentation **Datei:** `~/Nextcloud/egonetix/infrastructure/hosts/srvdocker02.md` **Neuer Abschnitt unter "Docker Containers":** ```markdown ## Wichtige Updates ### n8n Security Update (2026-02-04) - **Version:** 1.123.5 → 2.3.4 - **Grund:** CVE-2025-68668 (Python Sandbox RCE, CVSS 9.9) - **Downtime:** ~8 Minuten - **Migration:** PostgreSQL Schema automatisch migriert - **Tests:** LangChain/OpenAI Integration erfolgreich getestet - **Commit:** [commit-hash] ``` ### Git Commit ```bash cd ~/Nextcloud/egonetix/n8n git add Dockerfile.n8n-curl README.md git commit -m "Security Update: n8n 1.123.5 → 2.3.4 (CVE-2025-68668) - Update Dockerfile.n8n-curl auf n8n:2.3.4 - Behebt CVE-2025-68668 (Python Sandbox Bypass, CVSS 9.9) - PostgreSQL Schema-Migration erfolgreich - LangChain/OpenAI Workflows getestet und funktional - Breaking Changes: keine in unserer Konfiguration Co-Authored-By: Claude Haiku 4.5 " git push origin main ``` --- ## Kritische Dateien | Datei | Änderung | |-------|----------| | `Dockerfile.n8n-curl` | Zeile 1: `FROM n8nio/n8n:1.123.5` → `FROM n8nio/n8n:2.3.4` | | `README.md` | Abschnitt "Upgrade n8n" erweitern mit Breaking Changes Hinweis | **Keine Änderungen nötig:** - `docker-compose.yml` (Environment-Variablen bleiben unverändert) - `scripts/*.sh` (Custom Scripts kompatibel) - Workflow-Files (keine Start Nodes, kein process.env) --- ## Verification Checklist Nach Abschluss des Updates: - [ ] PostgreSQL Backup erstellt und gesichert - [ ] `docker compose logs` zeigt keine Errors - [ ] Web-UI unter https://flow.egonetix.de/ erreichbar - [ ] Login funktioniert - [ ] Workflows-Liste zeigt alle Workflows - [ ] 3 LangChain Workflows manuell getestet: - [ ] `gebuehrenfrei_live` - AI-Extraktion funktioniert - [ ] `instabank_current` - AI-Extraktion funktioniert - [ ] `tfbank_current` - AI-Extraktion funktioniert - [ ] IMAP-Trigger aktiv (bei nächster E-Mail testen) - [ ] `n8n --version` zeigt 2.3.4 - [ ] README.md aktualisiert - [ ] `infrastructure/hosts/srvdocker02.md` aktualisiert - [ ] Git Commit erstellt und gepusht - [ ] Backup-Files können gelöscht werden (nach 1 Woche Betrieb) --- ## Geschätzte Zeiten | Phase | Dauer | |-------|-------| | Backup | 2-3 Minuten | | Update (Dockerfile Edit + Rebuild) | 3-5 Minuten | | Verifikation (Web-UI + Workflows) | 5-10 Minuten | | Dokumentation | 3-5 Minuten | | **Gesamt** | **15-25 Minuten** | **Downtime:** Nur während Container-Restart (~5 Minuten)