n8n_node_librebooking/SECURITY.md

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*