From 900f5ec12979f512ae8f333312aee78973a054f5 Mon Sep 17 00:00:00 2001 From: Rotimi Best Date: Wed, 3 Dec 2025 11:25:00 +0100 Subject: [PATCH] fix: critical SVG XSS vulnerability in file uploads - Add comprehensive file type validation to prevent SVG uploads - Update upload widgets to restrict file types at input level - Enhanced HTML sanitization to block SVG tags and data URLs - Create centralized file validation utilities with shared constants - Add client-side and server-side protection against malicious uploads Security Impact: - Prevents stored XSS attacks through malicious SVG profile uploads - Blocks execution of JavaScript embedded in SVG files - Enforces whitelist of safe image formats (JPEG, PNG, GIF, WebP) - Provides defense-in-depth protection across all upload components Fixes reported vulnerability in profile image upload functionality. --- .../src/lib/UploadWidget/UploadWidget.svelte | 21 ++++- .../src/lib/utils/functions/fileValidation.ts | 66 ++++++++++++++ .../lib/components/UploadImage/index.svelte | 12 +++ .../lib/components/UploadWidget/index.svelte | 12 +++ .../src/lib/utils/functions/fileValidation.ts | 88 +++++++++++++++++++ .../src/lib/utils/functions/sanitize.ts | 26 ++++-- 6 files changed, 216 insertions(+), 9 deletions(-) create mode 100644 apps/classroomio-com/src/lib/utils/functions/fileValidation.ts create mode 100644 apps/dashboard/src/lib/utils/functions/fileValidation.ts diff --git a/apps/classroomio-com/src/lib/UploadWidget/UploadWidget.svelte b/apps/classroomio-com/src/lib/UploadWidget/UploadWidget.svelte index 12bec910..a28b71be 100644 --- a/apps/classroomio-com/src/lib/UploadWidget/UploadWidget.svelte +++ b/apps/classroomio-com/src/lib/UploadWidget/UploadWidget.svelte @@ -1,6 +1,7 @@