Исправления безопасности.
IDOR на вложениях, высокая критичность (components/masspersonalmessage.sender/class.php, handleSendAction): проверка MODULE_ID файла общая для всех пользователей модуля, поэтому пользователь с правом access_module мог перебором последовательных ID (attachments=[N]) прикрепить к своей рассылке файл, загруженный другим пользователем модуля, и получить его содержимое. Теперь при загрузке файла (handleFileUpload) его владелец фиксируется в сессии пользователя; при отправке (handleSendAction) принимаются только файлы, загруженные текущим пользователем в этой же сессии.
Неверное поле в проверке владельца при отзыве доступа (handleRevokeAccess): отозвать выданное разрешение на отправку от своего имени мог только исходный запрашивающий (UF_KMPM_USER_ID), а не владелец идентичности (UF_KMPM_REQUESTED_USER_ID), от чьего имени разрешение выдано. В результате владелец идентичности не мог самостоятельно отозвать право, выданное им ранее. Теперь отзыв доступен обеим сторонам.
Недостаточно строгая загрузка файлов, defense-in-depth (handleFileUpload): MFI-контроллеру передавался режим «любой файл» (allowUpload=A), а идентификатор модуля и forceMd5 брались из запроса. Заданы явный allowlist допустимых расширений, фиксированный moduleId и forceMd5=false.