
Una vulnerabilità di Cross-Site Scripting (XSS) persistente è stata identificata in vaahcms, in particolare nell'interazione tra la logica di caricamento dei file in MediaController.php e il metodo storeAvatar() in UserBase.php, che consente a un utente registrato con privilegi minimi di caricare un file SVG dannoso contenente JavaScript incorporato. La vulnerabilità deriva dal fatto che il salvataggio del file avviene prima della validazione del contenuto o del tipo MIME, lasciando file dannosi in un percorso prevedibile e accessibile pubblicamente sul server.
La vulnerabilità nasce dal metodo upload() in MediaController.php
$path = $request->file($input_file_name) ->storeAs($request->folder_path, $upload_file_name); che permette a un attaccante di specificare il percorso della directory, consentendogli di posizionare file dannosi (come un SVG carico di XSS) direttamente nella directory public/, rendendo il payload immediatamente accessibile tramite un browser web.
Lo sfruttamento riuscito consente a un attaccante di controllare il contenuto e il nome di un file scritto in un percorso di archiviazione pubblico (/storage/media/YYYY/MM/<controlled-filename>.svg). Se questo SVG accessibile pubblicamente viene successivamente renderizzato dal browser di un utente tramite un ``, <object> o un link appositamente creato, lo script incorporato verrà eseguito, portando a XSS persistente.
POST /backend/vaah/manage/media/upload
/storage/media/YYYY/MM/<controlled-filename>.svg.{"success": false, "errors": ["Unable to decode input"]}).POC.svg).xss.svg)./storage/media/2025/08/xss.svg.
enshrined/svg-sanitize per PHP)Ricercatore: Thaw Phone Nyo
Data di divulgazione: 2025/10/8