Pentest R97: Attachment-Validierung im Send-Handler
R97.1 LOW: malformed content (null, fehlend, true, "") landete mit rohem Buffer.from()-Fehlertext in der Response; "" liess sogar 0-Byte-Anhänge durch. R97.2 INFO: keine App-Level-Caps für Größe/Anzahl – die im Frontend dokumentierten 10/25 MB hingen am bodyParser. Fix: validateAttachments() läuft VOR sendEmail() im Controller: - max 25 Anhänge - filename non-empty String, content non-empty Base64, optionaler contentType als String - 10 MB pro Datei, 25 MB total (Größen-Schätzung über base64-Länge, kein Buffer.from während Validierung) Harte 400 mit klarer Meldung. Sanity-Test 18/18 grün. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -97,6 +97,25 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
||||
|
||||
## ✅ Erledigt
|
||||
|
||||
- [x] **🔒 Pentest R97 – Attachment-Validierung im Send-Handler**
|
||||
- R97.1 (LOW): malformed `content` (`null`, fehlend, `true`, `""`)
|
||||
erzeugte 200/500 mit rohem `Buffer.from()`-Fehlertext in der
|
||||
Response. `content: ""` ließ sogar eine Mail mit 0-Byte-Anhang
|
||||
durchgehen.
|
||||
- R97.2 (INFO): keine App-Level-Caps (Größe + Anzahl) – die im
|
||||
Frontend dokumentierten 10 MB/25 MB/Datei-Limits hingen am
|
||||
bodyParser; falls der je hochgedreht wird, fällt die Sicherung.
|
||||
- Fix: `validateAttachments()` im Controller `sendEmailFromAccount`
|
||||
läuft **vor** dem `sendEmail`-Aufruf:
|
||||
- `attachments` muss Array oder undefined sein
|
||||
- max 25 Anhänge
|
||||
- jeder: `filename` non-empty String, `content` non-empty Base64-
|
||||
String (Regex), optional `contentType` String
|
||||
- max 10 MB/Datei, 25 MB gesamt (Schätzung via base64-Länge × 0.75,
|
||||
kein Buffer.from-Aufruf während der Validierung)
|
||||
- Bei Verstoß harte 400 mit klarer Meldung. Sanity-Test: 18/18 Cases
|
||||
grün inkl. aller R97.1-Pentest-Payloads.
|
||||
|
||||
- [x] **🆕 E-Mail-Compose: Vertragsdokumente anhängen + Kundendaten einfügen**
|
||||
- Im Compose-Modal (nur wenn Vertrag-Kontext) zwei neue Buttons neben
|
||||
"Datei anhängen":
|
||||
|
||||
Reference in New Issue
Block a user