Mitigate arbitrary path traversal in download_private_file (GHSL-2024-183) #1083
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Thanks GHSL team member @p- for disovering and reporting this!
Arbitrary path traversal in
download_private_file
(GHSL-2024-183) vulnerability reported:A path traversal vulnerability accessible via MediaController's download_private_file method allows authenticated users to download any file on the web server Camaleon CMS is running on (depending on the file permissions).
This PR fixes the vulnerability by introducing a check in the
CamaleonCmsLocalUploader
'sfetch_file
method for the filename to not include..
.Also, changed the exception-based control flow of the
fetch_file
to just returning errors, because:ActionDispatch::ExceptionWrapper.rescue_responses
list (see - rails/rails@a8d1d92)config.action_dispatch.show_exceptions
has changed - see Document developer-facing change toconfig.action_dispatch.show_exceptions
default rails/rails#50339