
CVE-2026-8347 è una vulnerabilità di Insecure Direct Object Reference (IDOR) combinata con un livello di autorizzazione errato in Concrete CMS versioni 9.5.0 e precedenti. Il difetto risiede nella finestra di dialogo Reorder delle associazioni Express, che consente a un utente con soli permessi di visualizzazione su una voce Express di modificare l'ordinamento delle associazioni per un'altra entità.
CVE-2026-8347 è una vulnerabilità di Riferimento Diretto a Oggetti Non Sicuro (IDOR) che interessa Concrete CMS versioni 9.5.0 e precedenti. Il problema risiede nella funzionalità Express Association Reorder a causa di controlli di autorizzazione insufficienti.
Quando un utente riordina le associazioni, l'applicazione verifica che l'utente abbia il permesso di visualizzare la voce Express ma non conferma se l'utente è autorizzato a modificarla. Di conseguenza, un utente autenticato con privilegi limitati può manipolare l'identificatore di un'altra entità Express e riordinarne le associazioni, anche senza permessi di modifica.
A differenza delle vulnerabilità di SQL Injection o Remote Code Execution, questo difetto non comporta l'iniezione di comandi o codice dannoso. Sfrutta invece un controllo degli accessi non corretto modificando un identificatore di oggetto controllato dall'utente (come un ID di entità) per fare riferimento alla risorsa di un altro utente. Poiché il server non valida correttamente l'autorizzazione per l'oggetto richiesto, esegue l'azione su dati che l'attaccante non dovrebbe poter modificare.
// L'utente richiede di riordinare le associazioni $entityId = $_POST['entityId'];
$entity = $entityRepository->find($entityId);
// Verifica solo che l'utente possa accedere all'entità if ($permissionChecker->canView($entity)) {
// Riordina le associazioni senza verificare il permesso di modifica
$associationService->reorder($entity, $_POST['order']);
return response()->json([
'status' => 'success'
]);
}
L'applicazione valida solo il permesso di visualizzazione prima di eseguire un'operazione che modifica lo stato.
Un attaccante può modificare il parametro entityId nella richiesta per fare riferimento all'entità di un altro utente. Poiché non viene eseguito alcun controllo di autorizzazione per la modifica stessa, l'operazione di riordino riesce su una risorsa non autorizzata.
Un attacco riuscito può consentire a un utente autenticato di:
La vulnerabilità interessa principalmente l'integrità dei dati e non consente intrinsecamente SQL Injection, Remote Code Execution o bypass dell'autenticazione.
L'applicazione dovrebbe verificare che l'utente autenticato abbia il permesso di modificare l'entità specifica prima di elaborare la richiesta di riordino.
$entityId = $_POST['entityId'];
$entity = $entityRepository->find($entityId);
// Verifica il permesso di modifica if (!$permissionChecker->canEdit($entity)) {
return response()->json([
'error' => 'Accesso negato.'
], 403);
}
// L'utente è autorizzato $associationService->reorder($entity, $_POST['order']);
return response()->json([ 'status' => 'success' ]);
Aggiornare a Concrete CMS 9.5.1 o successivo. Gli sviluppatori dovrebbero applicare controlli di autorizzazione lato server adeguati per ogni richiesta che modifica lo stato e garantire che gli utenti possano modificare solo le risorse per cui hanno esplicitamente il permesso di modifica.