Заметки
Что возвращает CFile::GetPath и как проверить ссылку на файл
CFile::GetPath возвращает путь по ID обычного файла. Сам вызов не создаёт контроллер скачивания и не проверяет право получателя ссылки на CRM-карточку или задачу.
Публичная ссылка — отдельное решение
У Диска есть disk.file.getExternalLink, но его результат предназначен для публичного доступа. Не используйте этот метод как замену защищённому скачиванию конфиденциальных документов.
Что делать с закрытым документом
Используйте штатный механизм скачивания, соответствующий исходной сущности, или свой авторизованный контроллер. Перед выдачей файла контроллер должен проверять право пользователя на объект и принадлежность файла этому объекту; одного входящего file_id недостаточно.
Проверяйте конечный URL без сессии и под пользователем без доступа. ID файла Диска не подставляется в CFile::GetPath напрямую. Разбор доступа к файлу Диска.