The vulnerability is a classic Insecure Direct Object Reference (IDOR) within the Concrete CMS conversations feature. The core issue lies in several controller actions that accept numeric IDs to retrieve and display data objects like conversation messages, ratings, and file attachments. These actions failed to perform authorization checks to ensure the currently authenticated (or unauthenticated) user had the right to access the requested objects.
The primary vulnerable function, Concrete\Controller\Frontend\Conversations\MessagePage::getConversation, allowed an unauthenticated attacker to view the content of any conversation on the system by simply enumerating the conversation ID in the URL. This exposed all messages, including those in restricted or private areas.
Related functions for fetching message details, ratings, and handling file attachments shared the same flaw. An attacker could not only read conversations but also access details of specific messages and potentially attach restricted files to conversations, further exposing sensitive information. The security patch addresses these issues by scoping data retrieval to the current page's context and adding explicit permission checks (canViewCalendar, canViewFile, canViewExpressEntries) before returning any data, thus ensuring users can only access information they are authorized to see.