
CVE-2026-8347 est une vulnérabilité de référence directe à un objet (IDOR) combinée à un mauvais niveau d'autorisation dans les versions 9.5.0 et antérieures de Concrete CMS. Le défaut existe dans la boîte de dialogue de réorganisation des associations Express, permettant à un utilisateur disposant uniquement d'autorisations de visualisation sur une entrée Express de modifier l'ordre des associations pour une autre entité.
CVE-2026-8347 est une vulnérabilité de référence directe à un objet non sécurisée (IDOR) affectant Concrete CMS versions 9.5.0 et antérieures. Le problème existe dans la fonctionnalité Express Association Reorder en raison de contrôles d'autorisation insuffisants.
Lorsqu'un utilisateur réorganise des associations, l'application vérifie que l'utilisateur a la permission de voir l'entrée Express mais ne confirme pas si l'utilisateur est autorisé à la modifier. Par conséquent, un utilisateur authentifié disposant de privilèges limités peut manipuler l'identifiant d'une autre entité Express et réorganiser ses associations, même sans permissions de modification.
Contrairement aux vulnérabilités d'injection SQL ou d'exécution de code à distance, cette faille n'implique pas l'injection de commandes ou de code malveillant. Elle exploite plutôt un contrôle d'accès défaillant en modifiant un identifiant d'objet contrôlé par l'utilisateur (tel qu'un ID d'entité) pour référencer la ressource d'un autre utilisateur. Étant donné que le serveur ne valide pas correctement l'autorisation pour l'objet demandé, il exécute l'action sur des données que l'attaquant ne devrait pas pouvoir modifier.
// L'utilisateur demande à réorganiser des associations $entityId = $_POST['entityId'];
$entity = $entityRepository->find($entityId);
// Vérifie uniquement que l'utilisateur peut accéder à l'entité if ($permissionChecker->canView($entity)) {
// Réorganise les associations sans vérifier la permission de modification
$associationService->reorder($entity, $_POST['order']);
return response()->json([
'status' => 'success'
]);
}
L'application valide uniquement la permission de visualisation avant d'effectuer une opération de modification d'état.
Un attaquant peut modifier le paramètre entityId dans la requête pour référencer l'entité d'un autre utilisateur. Étant donné qu'aucun contrôle d'autorisation n'est effectué pour la modification elle-même, l'opération de réorganisation aboutit sur une ressource non autorisée.
Une attaque réussie peut permettre à un utilisateur authentifié de :
La vulnérabilité affecte principalement l'intégrité des données et ne permet pas intrinsèquement l'injection SQL, l'exécution de code à distance ou le contournement de l'authentification.
L'application doit vérifier que l'utilisateur authentifié a la permission de modifier l'entité spécifique avant de traiter la demande de réorganisation.
$entityId = $_POST['entityId'];
$entity = $entityRepository->find($entityId);
// Vérifier la permission de modification if (!$permissionChecker->canEdit($entity)) {
return response()->json([
'error' => 'Accès refusé.'
], 403);
}
// L'utilisateur est autorisé $associationService->reorder($entity, $_POST['order']);
return response()->json([ 'status' => 'success' ]);
Mettez à niveau vers Concrete CMS 9.5.1 ou une version ultérieure. Les développeurs doivent appliquer des contrôles d'autorisation côté serveur rigoureux pour chaque demande de modification d'état et s'assurer que les utilisateurs ne peuvent modifier que les ressources qu'ils sont explicitement autorisés à éditer.