ADVISORIES
GEM
SEVERITY
CVSS v3.x: 6.8 (Medium)
PATCHED VERSIONS
- ~> 2.2.5
- >= 3.0.5
DESCRIPTION
###Impact CarrierWave::Uploader::ContentTypeAllowlist has a Content-Type allowlist bypass vulnerability, possibly leading to XSS.
The validation in allowlisted_content_type?
determines Content-Type
permissions by performing a partial match.
If the content_type
argument of allowlisted_content_type?
is passed
a value crafted by the attacker, Content-Types not included in the
content_type_allowlist
will be allowed.
In addition, by setting the Content-Type configured by the attacker at the time of file delivery, it is possible to cause XSS on the user's browser when the uploaded file is opened.
Patches
Workarounds
When validating with allowlisted_content_type?
in
CarrierWave::Uploader::ContentTypeAllowlist,
forward match(\\A
) the Content-Type set in content_type_allowlist
,
preventing unintentional permission of text/html;image/png
when
you want to allow only image/png
in content_type_allowlist
.
References
OWASP - File Upload Cheat Sheet
RELATED
- https://nvd.nist.gov/vuln/detail/CVE-2023-49090
- https://github.com/carrierwaveuploader/carrierwave/security/advisories/GHSA-gxhx-gq-49hj
- https://github.com/carrierwaveuploader/carrierwave/commit/39b282db5c1303899b3d3381ce8a837840f983b5
- https://github.com/carrierwaveuploader/carrierwave/commit/863d425c76eba12c3294227b39018f6b2dccbbf3
- https://github.com/carrierwaveuploader/carrierwave/blob/master/lib/carrierwave/uploader/content_type_allowlist.rb
- https://rubygems.org/gems/carrierwave/versions/2.2.5
- https://rubygems.org/gems/carrierwave/versions/3.0.5
- https://github.com/advisories/GHSA-gxhx-g4fq-49hj