The vulnerability exists in Concrete CMS versions 9.5.0 and below, where an Insecure Direct Object Reference (IDOR) allows unauthorized access to files. The core of the issue lies in the AddMessage and UpdateMessage conversation controllers. Specifically, the getAttachments method within these controllers accepted integer-based file IDs from user input and directly fetched the corresponding file objects from the database using $em->find(File::class, $attachmentID). This process lacked a crucial permission check to verify if the user performing the action was authorized to access the specified file.
The patch, identified in commit f22b9dff59454391a50a255a39995bf635deea9e, addresses this vulnerability in two ways. First, it changes the file lookup from using the sequential, guessable integer ID to a non-sequential UUID (fUUID). Second, and more importantly, it introduces a permission check using (new Checker($file))->canViewFile() before the file is attached. This ensures that even if a user provides a valid file identifier, they can only attach files they are permitted to view, effectively closing the IDOR vulnerability.