Возможный обход директорий: /uploads/* позволяет доступ к файлам в разных директориях

Описание проблемы

В ходе оценки безопасности нашего кастомизированного развертывания Discourse была обнаружена потенциальная уязвимость обхода директорий, связанная с конечной точкой /uploads/*.

Детали проблемы

  • Доступ к /uploads/ позволяет пользователям получать файлы из произвольных директорий загрузок путем манипуляции путем в URL.

  • Например, возможно обойти защиту и получить доступ к файлам в разных директориях загрузок, которые должны быть логически разделены или защищены.

  • Такое поведение может позволить несанкционированным пользователям получить доступ к конфиденциальным файлам или вложениям, не предназначенным для них, что создает угрозу безопасности.

Пример

Предположим, пользователь А загрузил файл в свои личные сообщения (или в другом ограниченном контексте).

Злоумышленник может сформировать URL, например:

https://<ваш-домен-форума>/uploads/default/original/1X/../../another_directory/secret_file.jpg

Это позволяет злоумышленнику подняться по дереву директорий и получить доступ к файлам в других директориях.

Влияние на безопасность

  • Несанкционированное раскрытие приватных, внутренних или иначе ограниченных файлов

  • Возможная эскалация в зависимости от содержимого файла

Запрашиваемые вопросы / обратная связь

  • Является ли это ожидаемым поведением в текущей реализации загрузки?

  • Существуют ли рекомендуемые конфигурации или патчи для предотвращения обхода директорий в /uploads/?

  • Обсуждалась ли эта проблема или были ли приняты меры по её устранению в исходном коде Discourse?

  • Есть ли у вас рекомендации по дальнейшему обеспечению безопасности доступа к файлам в развертываниях Discourse?

Благодарим за внимание и обратную связь по поводу этой потенциальной проблемы.

Возможно, вас заинтересует функция secure-uploads.