
CVE-2026-8347 — Updated!
CVE-2026-8347 ist eine Schwachstelle durch Insecure Direct Object Reference (IDOR) in Kombination mit einer falschen Autorisierungsebene in Concrete CMS Version 9.5.0 und früher. Der Fehler besteht im Express-Assoziationsdialog „Reorder“, der es einem Benutzer mit lediglich Ansichtsberechtigungen für einen Express-Eintrag ermöglicht, die Reihenfolge der Assoziationen für eine andere Entität zu ändern.
CVE-2026-8347 – Unsichere direkte Objektreferenz (IDOR) in Concrete CMS
Überblick
CVE-2026-8347 ist eine Unsichere direkte Objektreferenz (IDOR)-Schwachstelle, die Concrete CMS in den Versionen 9.5.0 und früher betrifft. Das Problem besteht in der Express-Association-Reorder-Funktionalität aufgrund unzureichender Autorisierungsprüfungen.
Wenn ein Benutzer Assoziationen neu anordnet, überprüft die Anwendung, ob der Benutzer die Berechtigung hat, den Express-Eintrag anzusehen, bestätigt jedoch nicht, ob der Benutzer autorisiert ist, ihn zu ändern. Infolgedessen kann ein authentifizierter Benutzer mit eingeschränkten Berechtigungen die Kennung einer anderen Express-Entität manipulieren und deren Assoziationen neu anordnen, selbst ohne Bearbeitungsberechtigungen.
Im Gegensatz zu SQL-Injection- oder Remote-Code-Execution-Schwachstellen beinhaltet dieser Fehler kein Einschleusen bösartiger Befehle oder Codes. Stattdessen nutzt er eine fehlerhafte Zugriffskontrolle aus, indem eine benutzergesteuerte Objektkennung (wie eine Entitäts-ID) geändert wird, um auf die Ressource eines anderen Benutzers zu verweisen. Da der Server die Autorisierung für das angeforderte Objekt nicht ordnungsgemäß validiert, führt er die Aktion an Daten aus, die der Angreifer nicht ändern dürfte.
Konzeptionell anfällige Logik:
// Benutzer fordert die Neuanordnung von Assoziationen an $entityId = $_POST['entityId'];
$entity = $entityRepository->find($entityId);
// Überprüft nur, ob der Benutzer auf die Entität zugreifen kann if ($permissionChecker->canView($entity)) {
// Ordnet Assoziationen neu an, ohne die Bearbeitungsberechtigung zu prüfen
$associationService->reorder($entity, $_POST['order']);
return response()->json([
'status' => 'success'
]);
}
Warum es anfällig ist
Die Anwendung validiert nur die Anzeigeberechtigung, bevor sie eine zustandsändernde Operation durchführt.
Ein Angreifer kann den entityId-Parameter in der Anfrage ändern, um auf die Entität eines anderen Benutzers zu verweisen. Da keine Autorisierungsprüfung für die Änderung selbst durchgeführt wird, gelingt die Neuanordnungsoperation auf einer nicht autorisierten Ressource.
Auswirkungen
Ein erfolgreicher Angriff kann es einem authentifizierten Benutzer ermöglichen:
- Die Reihenfolge der Assoziationen einer anderen Express-Entität zu ändern.
- Nicht autorisierte Änderungen an Anwendungsdaten vorzunehmen.
- Die Integrität gespeicherter Informationen zu gefährden.
Die Schwachstelle betrifft in erster Linie die Datenintegrität und ermöglicht von Natur aus keine SQL-Injection, Remote Code Execution oder Umgehung der Authentifizierung.
Korrigierter Code (konzeptionell)
Die Anwendung sollte überprüfen, ob der authentifizierte Benutzer die Berechtigung hat, die jeweilige Entität zu ändern, bevor die Neuanordnungsanfrage verarbeitet wird.
$entityId = $_POST['entityId'];
$entity = $entityRepository->find($entityId);
// Änderungsberechtigung überprüfen if (!$permissionChecker->canEdit($entity)) {
return response()->json([
'error' => 'Access denied.'
], 403);
}
// Benutzer ist autorisiert $associationService->reorder($entity, $_POST['order']);
return response()->json([ 'status' => 'success' ]);
Betroffene Software
- Produkt: Concrete CMS
- Betroffene Versionen: 9.5.0 und früher
- Behobene Version: 9.5.1
Abhilfemaßnahmen
Upgrade auf Concrete CMS 9.5.1 oder höher. Entwickler sollten für jede zustandsändernde Anfrage ordnungsgemäße serverseitige Autorisierungsprüfungen durchsetzen und sicherstellen, dass Benutzer nur Ressourcen ändern können, für die sie ausdrücklich bearbeitungsberechtigt sind.