
CVE-2026-8347 — Updated!
CVE-2026-8347 é uma vulnerabilidade de Referência Direta a Objeto Insegura (IDOR) combinada com um nível de autorização incorreto no Concrete CMS versões 9.5.0 e anteriores. A falha existe no diálogo Reordenar associação do Express, permitindo que um usuário com apenas permissões de visualização em uma entrada do Express modifique a ordem das associações de outra entidade.
CVE-2026-8347 – Referência Direta a Objeto Insegura (IDOR) no Concrete CMS
Visão Geral
CVE-2026-8347 é uma vulnerabilidade de Referência Direta a Objeto Insegura (IDOR) que afeta o Concrete CMS nas versões 9.5.0 e anteriores. O problema existe na funcionalidade Express Association Reorder devido a verificações de autorização insuficientes.
Quando um usuário reordena associações, o aplicativo verifica se o usuário tem permissão para visualizar a entrada Express, mas não confirma se o usuário está autorizado a modificar essa entrada. Como resultado, um usuário autenticado com privilégios limitados pode manipular o identificador de outra entidade Express e reordenar suas associações, mesmo sem permissões de edição.
Diferentemente de vulnerabilidades de Injeção de SQL ou Execução Remota de Código, essa falha não envolve a injeção de comandos ou códigos maliciosos. Em vez disso, ela explora o controle de acesso quebrado ao alterar um identificador de objeto controlado pelo usuário (como um ID de entidade) para referenciar o recurso de outro usuário. Como o servidor não valida adequadamente a autorização para o objeto solicitado, ele executa a ação em dados que o atacante não deveria poder modificar.
Lógica vulnerável conceitual:
// User requests to reorder associations $entityId = $_POST['entityId'];
$entity = $entityRepository->find($entityId);
// Only verifies that the user can access the entity if ($permissionChecker->canView($entity)) {
// Reorders associations without checking edit permission
$associationService->reorder($entity, $_POST['order']);
return response()->json([
'status' => 'success'
]);
}
Por Que É Vulnerável
O aplicativo apenas valida a permissão de visualização antes de executar uma operação que altera o estado.
Um atacante pode modificar o parâmetro entityId na solicitação para referenciar a entidade de outro usuário. Como nenhuma verificação de autorização é realizada para a própria modificação, a operação de reordenação é executada com sucesso em um recurso não autorizado.
Impacto
Um ataque bem-sucedido pode permitir que um usuário autenticado:
- Modifique a ordem das associações pertencentes a outra entidade Express.
- Execute alterações não autorizadas nos dados do aplicativo.
- Comprometa a integridade das informações armazenadas.
A vulnerabilidade afeta principalmente a integridade dos dados e não permite inerentemente Injeção de SQL, Execução Remota de Código ou bypass de autenticação.
Código Corrigido (Conceitual)
O aplicativo deve verificar se o usuário autenticado tem permissão para modificar a entidade específica antes de processar a solicitação de reordenação.
$entityId = $_POST['entityId'];
$entity = $entityRepository->find($entityId);
// Verify modification permission if (!$permissionChecker->canEdit($entity)) {
return response()->json([
'error' => 'Access denied.'
], 403);
}
// User is authorized $associationService->reorder($entity, $_POST['order']);
return response()->json([ 'status' => 'success' ]);
Software Afetado
- Produto: Concrete CMS
- Versões Afetadas: 9.5.0 e anteriores
- Versão Corrigida: 9.5.1
Mitigação
Atualize para o Concrete CMS 9.5.1 ou posterior. Os desenvolvedores devem aplicar verificações de autorização adequadas no lado do servidor para cada solicitação que altera o estado e garantir que os usuários só possam modificar recursos que estejam explicitamente autorizados a editar.