CVE-2025-63307 – Cross-site Scripting (XSS) persistente autenticato in laravel-file-manager v3.3.1
🧭 Panoramica
Una vulnerabilità di Cross-site Scripting (XSS) persistente autenticato in laravel-file-manager v3.3.1 e versioni precedenti consente ad attaccanti con accesso all'interfaccia del file manager di iniettare e rendere persistente codice JavaScript arbitrario nei file caricati o creati.
Caricando un file .html o .svg appositamente predisposto contenente JavaScript dannoso, oppure creando e modificando direttamente tale file all'interno del file manager, gli attaccanti possono ottenere una XSS persistente che viene eseguita quando qualsiasi altro utente autenticato o amministratore visualizza il file tramite l'interfaccia web.
🧱 Componente interessato
- Progetto:
laravel-file-manager
- Componente: Funzionalità di caricamento, creazione e rendering dei file (es. FileManagerController.php)
- Versione interessata: v3.3.1 e versioni precedenti
🎯 Vettori di attacco
- Autenticarsi con un account che dispone del permesso di caricare, creare o rinominare file tramite l'interfaccia del file manager.
- Caricare o creare un file con estensione .svg o .html contenente JavaScript dannoso.
- L'applicazione memorizza questo file senza validarne il contenuto o sanificare gli script incorporati.
- Quando un altro utente (come un amministratore o un maintainer del repository) visualizza o anteprime il file nel proprio browser, il JavaScript dannoso viene eseguito nel contesto del dominio dell'applicazione.
- Lo script può quindi eseguire azioni come il dirottamento della sessione, attacchi CSRF o il furto di dati sensibili dal browser della vittima.
💥 Impatto
- XSS persistente: esecuzione persistente di JavaScript nell'origine dell'applicazione.
- Dirottamento della sessione e furto dell'account: gli attaccanti possono rubare i cookie o eseguire azioni come la vittima.
- Phishing / UI Redressing: gli script iniettati possono falsificare elementi dell'interfaccia o reindirizzare gli utenti a siti dannosi.
- Esposizione di dati sensibili: accesso alle informazioni all'interno dell'applicazione accessibili alla sessione della vittima.
CVSS v3
Punteggio base: 8.1
Vector: CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
Gravità: Alta
🛡️ Rimedio consigliato
- Implementare una rigorosa validazione e filtro lato server del tipo di contenuto per i file caricati.
- Disabilitare o sanificare i caricamenti con estensione .html, .svg o altri formati in grado di contenere contenuto attivo.
- Servire i file caricati dagli utenti con l'header
Content-Disposition: attachment o da un dominio/sottodominio separato e non eseguibile.
- Applicare codifica dell'output e sanificazione prima di rendere il contenuto controllato dall'utente nel browser.
🙏 Crediti
Scoperta e segnalata da: Chayawat Jeamprasertboon, Thanakorn Boontem, Sahapon Kanajanothai e Theethat Thamwasin