
Sicherheitsbericht über eine IDOR in Concrete CMS, die Konversationsbewertungen durch fehlende Autorisierung am get_rating-Endpunkt offenlegt, mit Grundursache, Angriffsszenario und Behebung.
CVE-2026-8239 ist eine Schwachstelle vom Typ Insecure Direct Object Reference (IDOR), die Concrete CMS 9.5.0 und frühere Versionen betrifft. Die Schwachstelle befindet sich im Endpunkt /ccm/frontend/conversations/get_rating, der es einem Angreifer ermöglicht festzustellen, ob eine Konversationsnachricht existiert, und deren Bewertungswert abzurufen, indem er eine beliebige Nachrichten-ID angibt. Der Endpunkt führt keine ordnungsgemäßen Autorisierungsprüfungen durch, bevor er die angeforderten Informationen zurückgibt.
Produkt: Concrete CMS Betroffene Versionen: 9.5.0 und früher Behobene Version: 9.5.1 Endpunkt: /ccm/frontend/conversations/get_rating Schwachstellentyp Kategorie: Insecure Direct Object Reference (IDOR) CWE-862: Fehlende Autorisierung
Der Endpunkt akzeptiert eine Nachrichten-ID vom Client und gibt Informationen über diese Nachricht zurück, ohne zu prüfen, ob der anfragende Benutzer autorisiert ist, darauf zuzugreifen.
Anstatt Besitz oder Berechtigungen zu validieren, vertraut die Anwendung der vom Benutzer bereitgestellten Kennung.
Konzeptionell:
Benutzer liefert messageId ↓ Server lokalisiert die Nachricht ↓ Keine Autorisierungsprüfung ↓ Gibt die Nachrichtenbewertung zurück
Da die Autorisierungsprüfung fehlt, kann ein Angreifer Nachrichten-IDs enumerieren und Informationen über Konversationen erlangen, auf die er keinen Zugriff haben sollte.
Angenommen, die Anwendung speichert Konversationsnachrichten mit numerischen IDs.
Eine legitime Anfrage könnte wie folgt aussehen:
GET /ccm/frontend/conversations/get_rating?messageId=125
Ein Angreifer kann die Kennung einfach ändern:
GET /ccm/frontend/conversations/get_rating?messageId=126
Wenn die Anwendung mit dem Bewertungswert antwortet, anstatt 403 Forbidden oder 404 Not Found zurückzugeben, kann der Angreifer bestätigen, dass die Nachricht existiert, und deren Bewertungsinformationen abrufen.
Dies ist ein klassischer IDOR, da sich nur die Objektkennung ändert – es sind kein schädlicher Payload und keine injizierten Befehle erforderlich.
Ein Angreifer kann:
Die Schwachstelle betrifft in erster Linie die Vertraulichkeit, da nicht autorisierte Benutzer auf Informationen zugreifen können, die geschützt sein sollten.
Metrik Punktzahl CVSS v3.1 (NVD) 5.3 – Mittel CVSS v4.0 (Concrete CMS CNA) 6.3 – Mittel
Der Hersteller hat den tatsächlich verwundbaren Quellcode nicht veröffentlicht. Das folgende Beispiel dient nur zur Veranschaulichung des Schwachstellenmusters.
$messageId = $_GET['messageId'];
$message = $conversationRepository->findMessage($messageId);
// No authorization check return response()->json([ 'rating' => $message->getRating() ]);
Die Anwendung ruft die Nachricht ausschließlich anhand der vom Benutzer bereitgestellten ID ab und gibt sofort deren Bewertung zurück. Es wird nie geprüft, ob der aktuelle Benutzer auf diese Nachricht zugreifen darf.
$messageId = $_GET['messageId'];
$message = $conversationRepository->findMessage($messageId);
if (!$authorizationService->canViewMessage($currentUser, $message)) { return response()->json([ 'error' => 'Access denied.' ], 403); }
return response()->json([ 'rating' => $message->getRating() ]);
Die korrigierte Implementierung prüft, ob der authentifizierte Benutzer die Berechtigung hat, die angeforderte Nachricht anzusehen, bevor sie deren Bewertung zurückgibt. Selbst wenn ein Angreifer die messageId ändert, erzwingt der Server die Autorisierung und lehnt nicht autorisierte Anfragen mit einer HTTP-403-Forbidden-Antwort ab. Dies verhindert IDOR, indem sichergestellt wird, dass Benutzer nur auf die Ressourcen zugreifen können, die sie anzeigen dürfen.