Pentest 70.1 (INFO): GIF/WebP-Whitelist in contract.routes Multer-Filter
contract.routes Vertragsdokumente: Multer-fileFilter blockte image/gif + image/webp, obwohl validateUploadedFile sie zulässt. Folge: GIF mit korrektem MIME 415, mit gespooftem MIME 201. Kein Sicherheitsproblem (Magic-Byte ist der echte Guard), nur Konsistenz.
This commit is contained in:
@@ -23,9 +23,13 @@ const docUpload = multer({
|
|||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
fileFilter: (_req, file, cb) => {
|
fileFilter: (_req, file, cb) => {
|
||||||
const allowed = ['application/pdf', 'image/jpeg', 'image/png', 'image/jpg'];
|
// Pentest 70.1: aligned mit validateUploadedFile-Whitelist
|
||||||
|
// (PDF/JPG/PNG/GIF/WebP). Multer-fileFilter ist nur "fast reject"
|
||||||
|
// anhand des client-gemeldeten MIME-Types; der echte Guard ist der
|
||||||
|
// Magic-Byte-Check in validateUploadedFile.
|
||||||
|
const allowed = ['application/pdf', 'image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/webp'];
|
||||||
if (allowed.includes(file.mimetype)) cb(null, true);
|
if (allowed.includes(file.mimetype)) cb(null, true);
|
||||||
else cb(new Error('Nur PDF, JPG und PNG Dateien sind erlaubt'));
|
else cb(new Error('Nur PDF, JPG, PNG, GIF oder WebP erlaubt'));
|
||||||
},
|
},
|
||||||
limits: { fileSize: 10 * 1024 * 1024 },
|
limits: { fileSize: 10 * 1024 * 1024 },
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -97,6 +97,16 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
|||||||
|
|
||||||
## ✅ Erledigt
|
## ✅ Erledigt
|
||||||
|
|
||||||
|
- [x] **🔒 Pentest 70.1 (INFO): GIF/WebP-Inkonsistenz in contract.routes Multer-Filter**
|
||||||
|
- `contract.routes.ts` Vertragsdokumente: Multer-fileFilter blockte
|
||||||
|
`image/gif` und `image/webp`, obwohl `validateUploadedFile` beide
|
||||||
|
Typen zulässt. Folge: GIF mit korrektem MIME `image/gif` → 415, GIF
|
||||||
|
mit gespooftem MIME `image/jpeg` → akzeptiert (vom Magic-Byte als
|
||||||
|
`.gif` erkannt). Kein Sicherheitsproblem (Magic-Byte ist der echte
|
||||||
|
Guard), aber inkonsistent.
|
||||||
|
- Fix: Whitelist um `image/gif` + `image/webp` ergänzt → konsistent
|
||||||
|
zum zentralen `validateUploadedFile` und zu `upload.routes.ts`.
|
||||||
|
|
||||||
- [x] **🔒 Pentest 69.3 (INFO → Defense-in-Depth): Magic-Byte-Check auf Vertragsdokumente erweitert**
|
- [x] **🔒 Pentest 69.3 (INFO → Defense-in-Depth): Magic-Byte-Check auf Vertragsdokumente erweitert**
|
||||||
- `contract.routes.ts` Vertragsdokumente-Upload hatte bisher nur den
|
- `contract.routes.ts` Vertragsdokumente-Upload hatte bisher nur den
|
||||||
PDF-Inhalts-Scan (`scanUploadedPdfIfPresent` aus 68.1). JPG/PNG-
|
PDF-Inhalts-Scan (`scanUploadedPdfIfPresent` aus 68.1). JPG/PNG-
|
||||||
|
|||||||
Reference in New Issue
Block a user