235 lines
5.5 KiB
Markdown
235 lines
5.5 KiB
Markdown
# Sicherheitshinweise - LibreBooking n8n Node
|
|
|
|
Dieses Dokument erklärt die npm audit Vulnerabilities und wie man damit umgeht.
|
|
|
|
## Inhaltsverzeichnis
|
|
|
|
- [Übersicht der Vulnerabilities](#übersicht-der-vulnerabilities)
|
|
- [Warum diese Vulnerabilities existieren](#warum-diese-vulnerabilities-existieren)
|
|
- [Risikoeinschätzung](#risikoeinschätzung)
|
|
- [Empfehlungen](#empfehlungen)
|
|
- [Wie man sie beheben kann](#wie-man-sie-beheben-kann)
|
|
- [Produktionsumgebungen](#produktionsumgebungen)
|
|
|
|
---
|
|
|
|
## Übersicht der Vulnerabilities
|
|
|
|
Beim Ausführen von `npm audit` werden möglicherweise folgende Vulnerabilities angezeigt:
|
|
|
|
### Critical: form-data
|
|
|
|
```
|
|
form-data <4.0.1
|
|
Severity: critical
|
|
Prototype Pollution in form-data
|
|
https://github.com/advisories/GHSA-xxx
|
|
```
|
|
|
|
### Moderate: lodash
|
|
|
|
```
|
|
lodash <4.17.21
|
|
Severity: moderate
|
|
Prototype Pollution in lodash
|
|
https://github.com/advisories/GHSA-xxx
|
|
```
|
|
|
|
---
|
|
|
|
## Warum diese Vulnerabilities existieren
|
|
|
|
Diese Vulnerabilities kommen **nicht direkt aus diesem Projekt**, sondern sind **transitive Dependencies** von `n8n-workflow` und `n8n-core`.
|
|
|
|
### Dependency-Kette:
|
|
|
|
```
|
|
n8n-nodes-librebooking
|
|
└── n8n-workflow (devDependency für Typen)
|
|
└── axios
|
|
└── form-data (vulnerable version)
|
|
└── lodash (vulnerable version)
|
|
```
|
|
|
|
### Wichtig zu verstehen:
|
|
|
|
1. **n8n-workflow** ist nur als `devDependency` und `peerDependency` deklariert
|
|
2. In Produktion verwendet n8n seine **eigene** n8n-workflow Version
|
|
3. Die vulnerable Dependencies werden nur beim **Entwickeln** installiert
|
|
4. Diese Package werden **nicht** in das finale dist/ Verzeichnis gebündelt
|
|
|
|
---
|
|
|
|
## Risikoeinschätzung
|
|
|
|
### Für dieses Projekt: **NIEDRIGES RISIKO**
|
|
|
|
| Aspekt | Risiko | Begründung |
|
|
|--------|--------|------------|
|
|
| Entwicklung | Niedrig | form-data/lodash werden nicht direkt verwendet |
|
|
| Produktion | Sehr niedrig | Keine transtiven Dependencies werden deployed |
|
|
| n8n Runtime | Abhängig von n8n | n8n selbst muss die Vulnerabilities beheben |
|
|
|
|
### Warum niedriges Risiko:
|
|
|
|
1. **form-data Vulnerability:**
|
|
- Betrifft nur das Parsen von multipart/form-data
|
|
- Dieser Node verwendet keine File-Uploads über form-data
|
|
- Die LibreBooking API verwendet JSON für alle Requests
|
|
|
|
2. **lodash Vulnerability:**
|
|
- Betrifft `_.set()` und `_.setWith()` Funktionen
|
|
- Dieser Node verwendet keine direkten lodash Aufrufe
|
|
- Die Vulnerability erfordert Angreifer-kontrollierten Input
|
|
|
|
---
|
|
|
|
## Empfehlungen
|
|
|
|
### Für Entwickler:
|
|
|
|
1. **Warnungen ignorieren** (wenn nicht kritisch):
|
|
```bash
|
|
npm install --ignore-scripts
|
|
```
|
|
|
|
2. **Audit bei npm install deaktivieren:**
|
|
```bash
|
|
# Einmalig:
|
|
npm install --no-audit
|
|
|
|
# Permanent via .npmrc:
|
|
echo "audit=false" >> .npmrc
|
|
```
|
|
|
|
3. **Overrides verwenden** (in package.json):
|
|
```json
|
|
"overrides": {
|
|
"form-data": "^4.0.1",
|
|
"lodash": "^4.17.21"
|
|
}
|
|
```
|
|
|
|
### Für Produktionsumgebungen:
|
|
|
|
1. **n8n aktuell halten:** Die n8n-Entwickler aktualisieren regelmäßig ihre Dependencies
|
|
2. **Nur vertrauenswürdige Inputs:** Keine ungeprüften Daten an die Nodes übergeben
|
|
3. **Network Isolation:** n8n Container im isolierten Netzwerk betreiben
|
|
|
|
---
|
|
|
|
## Wie man sie beheben kann
|
|
|
|
### Option 1: Overrides in package.json (empfohlen)
|
|
|
|
Die package.json enthält bereits Overrides für bekannte Vulnerabilities:
|
|
|
|
```json
|
|
"overrides": {
|
|
"form-data": "^4.0.1",
|
|
"lodash": "^4.17.21"
|
|
}
|
|
```
|
|
|
|
### Option 2: npm audit fix (begrenzt)
|
|
|
|
```bash
|
|
# Automatische Fixes (nur kompatible Updates)
|
|
npm audit fix
|
|
|
|
# Force Fixes (VORSICHT: kann Breaking Changes einführen)
|
|
npm audit fix --force
|
|
```
|
|
|
|
**Hinweis:** `npm audit fix` kann transitive Dependencies nur begrenzt beheben.
|
|
|
|
### Option 3: Update-Skript verwenden
|
|
|
|
```bash
|
|
./update-dependencies.sh
|
|
```
|
|
|
|
Das Skript:
|
|
- Führt `npm audit fix` aus
|
|
- Aktualisiert alle Dependencies
|
|
- Testet ob alles funktioniert
|
|
- Gibt einen Report
|
|
|
|
### Option 4: Resolutions (für yarn/pnpm)
|
|
|
|
Wenn Sie yarn statt npm verwenden:
|
|
|
|
```json
|
|
"resolutions": {
|
|
"form-data": "^4.0.1",
|
|
"lodash": "^4.17.21"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Produktionsumgebungen
|
|
|
|
### Best Practices:
|
|
|
|
1. **Docker Image aktuell halten:**
|
|
```bash
|
|
docker pull n8nio/n8n:latest
|
|
```
|
|
|
|
2. **Regelmäßige Updates:**
|
|
```bash
|
|
docker compose pull
|
|
docker compose up -d
|
|
```
|
|
|
|
3. **Security Scanning:**
|
|
```bash
|
|
# Image auf Vulnerabilities prüfen
|
|
docker scan n8nio/n8n:latest
|
|
# Oder mit Trivy:
|
|
trivy image n8nio/n8n:latest
|
|
```
|
|
|
|
4. **Netzwerk-Isolation:**
|
|
- n8n nicht direkt im Internet exponieren
|
|
- Reverse Proxy mit TLS verwenden
|
|
- Firewall-Regeln setzen
|
|
|
|
5. **Zugriffskontrollen:**
|
|
- Starke Passwörter verwenden
|
|
- Basic Auth oder OAuth aktivieren
|
|
- API-Keys für LibreBooking sicher speichern
|
|
|
|
### Sicherheits-Checkliste:
|
|
|
|
- [ ] n8n Version aktuell?
|
|
- [ ] Docker Image aktuell?
|
|
- [ ] TLS/HTTPS aktiviert?
|
|
- [ ] Starke Passwörter?
|
|
- [ ] Netzwerk isoliert?
|
|
- [ ] Regelmäßige Backups?
|
|
|
|
---
|
|
|
|
## Weiterführende Links
|
|
|
|
- [n8n Security Best Practices](https://docs.n8n.io/hosting/security/)
|
|
- [npm audit Documentation](https://docs.npmjs.com/cli/v8/commands/npm-audit)
|
|
- [OWASP Dependency Check](https://owasp.org/www-project-dependency-check/)
|
|
- [Snyk Vulnerability Database](https://snyk.io/vuln/)
|
|
|
|
---
|
|
|
|
## Meldung von Sicherheitsproblemen
|
|
|
|
Wenn Sie eine Sicherheitslücke **direkt in diesem Projekt** (nicht in Dependencies) finden:
|
|
|
|
1. **Nicht öffentlich melden** (kein GitHub Issue)
|
|
2. Kontaktieren Sie uns direkt per E-Mail
|
|
3. Geben Sie Zeit für einen Fix bevor öffentliche Disclosure
|
|
|
|
---
|
|
|
|
*Letzte Aktualisierung: Januar 2026*
|