Spam-Tab: Anhänge aus dem echten Junk-Ordner holen (Pentest R124)

Beim Spam-Feature wurden moveEmailToTrash/restoreEmailFromTrash auf
den echten Junk-Pfad umgestellt, vier Attachment-Funktionen im
Controller aber nicht: downloadAttachment, saveAttachmentTo,
saveAttachmentAsInvoice, saveAttachmentAsContractDocument bestimmten
den IMAP-Ordner weiter hart als
email.folder === 'SENT' ? 'Sent' : 'INBOX'.

Für SPAM-Mails landete das fälschlich auf INBOX. Da IMAP-UIDs pro
Ordner vergeben sind: bestenfalls 404, schlimmstenfalls (UID-Kollision
INBOX vs. Junk) der FALSCHE Anhang aus INBOX – der dann z.B. als
Rechnung/Vertragsdokument abgelegt würde. Kein Cross-Customer-Leak
(gleicher Kunde/Postfach), aber Datenintegritätsproblem.

Fix: an allen vier Stellen dieselbe Junk-Pfad-Logik wie in
moveEmailToTrash (email.folder === 'SPAM' → findJunkFolderPath).
findJunkFolderPath war in dem Controller noch nicht importiert.

Vom Pentester (R124) gefunden – beim ursprünglichen Feature übersehen.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-07-27 16:26:21 +02:00
co-authored by Claude Opus 4.7
parent 61c33a993b
commit 0a0cbe0e53
2 changed files with 68 additions and 5 deletions
+15
View File
@@ -97,6 +97,21 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
## ✅ Erledigt
- [x] **🐞 Spam-Tab: Anhänge aus Junk-Ordner (Pentest R124-Fund)**
- Beim Spam-Feature wurden `moveEmailToTrash`/`restoreEmailFromTrash`
auf den echten Junk-Pfad umgestellt, aber vier Attachment-Funktionen
im Controller (`downloadAttachment`, `saveAttachmentTo`,
`saveAttachmentAsInvoice`, `saveAttachmentAsContractDocument`)
bestimmten den IMAP-Ordner weiter hart als
`email.folder === 'SENT' ? 'Sent' : 'INBOX'`. Für SPAM-Mails landete
das fälschlich auf INBOX. Da IMAP-UIDs pro Ordner vergeben sind:
404 (Anhang nicht gefunden) oder bei UID-Kollision der falsche
Anhang aus INBOX (z.B. als Rechnung/Vertragsdokument abgelegt).
Kein Cross-Customer-Leak (bleibt im selben Postfach), aber echtes
Datenintegritätsproblem.
- Fix: an allen vier Stellen dieselbe Junk-Pfad-Logik wie in
`moveEmailToTrash` + `findJunkFolderPath` importiert.
- [x] **📧 E-Mail-Client: Spam-Ordner als eigener Tab**
- Neuer Tab „Spam" (zwischen Gesendet und Papierkorb) im E-Mail-Client,
zeigt den Junk-/Spam-Ordner des gewählten Postfachs damit