- Neuer Abschnitt "Karten erstellen (Aufgaben-Workflow)" mit Workflow A/B - Bekannte Struktur erweitert: Workflows, Columns, Lanes für Board 1 - Pitfalls ergänzt: Arrival Rule, Parent-Link API, linkedCards read-only - Settings und Plans aktualisiert Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
316 lines
8.4 KiB
Markdown
316 lines
8.4 KiB
Markdown
# 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 <noreply@anthropic.com>"
|
|
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)
|