
CVE-2026-8347 — это уязвимость, связанная с небезопасной прямой ссылкой на объект (IDOR) в сочетании с неверным уровнем авторизации в Concrete CMS версии 9.5.0 и более ранних. Дефект присутствует в диалоговом окне Reorder для связей Express, позволяя пользователю, имеющему только права на просмотр записи Express, изменять порядок связей для другой сущности.
CVE-2026-8347 — это уязвимость типа Insecure Direct Object Reference (IDOR), затрагивающая Concrete CMS версии 9.5.0 и более ранние. Проблема существует в функциональности Express Association Reorder из-за недостаточных проверок авторизации.
Когда пользователь изменяет порядок ассоциаций, приложение проверяет, что пользователь имеет разрешение на просмотр записи Express, но не подтверждает, авторизован ли пользователь на её изменение. В результате аутентифицированный пользователь с ограниченными привилегиями может манипулировать идентификатором другой сущности Express и изменять порядок её ассоциаций, даже не имея разрешений на редактирование.
В отличие от уязвимостей SQL-инъекций или удалённого выполнения кода, этот недостаток не связан с внедрением вредоносных команд или кода. Вместо этого он эксплуатирует нарушенный контроль доступа путём изменения управляемого пользователем идентификатора объекта (например, ID сущности) для ссылки на ресурс другого пользователя. Поскольку сервер не проверяет должным образом авторизацию для запрашиваемого объекта, он выполняет действие над данными, которые атакующий не должен иметь возможности изменять.
// Пользователь запрашивает изменение порядка ассоциаций $entityId = $_POST['entityId'];
$entity = $entityRepository->find($entityId);
// Проверяется только доступ пользователя к сущности if ($permissionChecker->canView($entity)) {
// Изменение порядка ассоциаций без проверки разрешения на редактирование
$associationService->reorder($entity, $_POST['order']);
return response()->json([
'status' => 'success'
]);
}
Приложение проверяет только разрешение на просмотр перед выполнением операции, изменяющей состояние.
Атакующий может изменить параметр entityId в запросе, чтобы сослаться на сущность другого пользователя. Поскольку проверка авторизации для самого изменения не выполняется, операция изменения порядка успешно выполняется над неавторизованным ресурсом.
Успешная атака может позволить аутентифицированному пользователю:
Уязвимость в первую очередь влияет на целостность данных и сама по себе не позволяет выполнять SQL-инъекции, удалённое выполнение кода или обход аутентификации.
Приложение должно проверять, что аутентифицированный пользователь имеет разрешение на изменение конкретной сущности, прежде чем обрабатывать запрос на изменение порядка.
$entityId = $_POST['entityId'];
$entity = $entityRepository->find($entityId);
// Проверка разрешения на изменение if (!$permissionChecker->canEdit($entity)) {
return response()->json([
'error' => 'Access denied.'
], 403);
}
// Пользователь авторизован $associationService->reorder($entity, $_POST['order']);
return response()->json([ 'status' => 'success' ]);
Обновитесь до Concrete CMS 9.5.1 или более поздней версии. Разработчикам следует внедрять надлежащие проверки авторизации на стороне сервера для каждого запроса, изменяющего состояние, и гарантировать, что пользователи могут изменять только те ресурсы, которые им явно разрешено редактировать.