CVE-2026-44587
published 2026-06-16CVE-2026-44587: CarrierWave has a denylisted_content_type bypass via Unescaped Regex Metacharacters CarrierWave is a framework to upload files from Ruby applications. In…
medium4.7CVSS 3.1
AVNACLPRNUIRSCCLINAN
EPSS
0.22%
12.8th percentile
CarrierWave has a denylisted_content_type bypass via Unescaped Regex Metacharacters
CarrierWave is a framework to upload files from Ruby applications. In versions prior to 2.2.7 and 3.1.3, the content_type_denylist check fails to escape regex metacharacters in string entries, causing the denylist to silently not match the content types it is intended to block. In lib/carrierwave/uploader/content_type_denylist.rb:57, denylist entries are interpolated directly into a regex without Regexp.quote or anchoring, so an entry such as image/svg+xml becomes the pattern /image\/svg+xml/, in which + is treated as a quantifier rather than a literal character and therefore never matches the real MIME type image/svg+xml. This is inconsistent with the allowlist implementation, which correctly applies both Regexp.quote and a \A anchor. Other content types containing regex metacharacters, such as application/xhtml+xml, are affected as well. As a result, any application that relies on content_type_denylist to block image/svg+xml, most commonly to prevent stored XSS, is silently unprotected. An attacker can upload an SVG file containing arbitrary JavaScript; if the application serves that SVG inline from its own origin, the script executes in the victim's browser, resulting in stored XSS. This issue has been fixed in versions 2.2.7 and 3.1.3.
Affected
4 ranges
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| carrierwave_project | carrierwave | >= 0 < 2.2.7 | 2.2.7 |
| carrierwave_project | carrierwave | >= 3.0.0.beta < 3.1.3 | 3.1.3 |
| carrierwaveuploader | carrierwave | < 2.2.7 | 2.2.7 |
| carrierwaveuploader | carrierwave | — | — |
Stop checking back — get the weekly exploitation signal.
Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.
VulDB
carrierwaveuploader carrierwave up to 2.2.6/3.1.2 SVG File content_type_denylist.rb permissive regular expression (Nessus ID 321723)
vuldb·2026-06-20
CVE-2026-44587 [CRITICAL] carrierwaveuploader carrierwave up to 2.2.6/3.1.2 SVG File content_type_denylist.rb permissive regular expression (Nessus ID 321723)
A vulnerability labeled as critical has been found in carrierwaveuploader carrierwave up to 2.2.6/3.1.2. Impacted is an unknown function in the library lib/carrierwave/uploader/content_type_denylist.rb of the component SVG File Handler. Such manipulation leads to permissive regular expression.
This vulnerability is documented as CVE-2026-44587. The attack can be executed remotely. There is not any exploit available.
The affected component should be upgraded.
CVEList
CarrierWave has a denylisted_content_type bypass via Unescaped Regex Metacharacters
cvelistv5·2026-06-16·CVSS 4.7
CVE-2026-44587 [MEDIUM] CWE-625 CarrierWave has a denylisted_content_type bypass via Unescaped Regex Metacharacters
CarrierWave has a denylisted_content_type bypass via Unescaped Regex Metacharacters
CarrierWave is a framework to upload files from Ruby applications. In versions prior to 2.2.7 and 3.1.3, the content_type_denylist check fails to escape regex metacharacters in string entries, causing the denylist to silently not match the content types it is intended to block. In lib/carrierwave/uploader/content_type_denylist.rb:57, denylist entries are interpolated directly into a regex without Regexp.quote or anchoring, so an entry such as image/svg+xml becomes the pattern /image\/svg+xml/, in which + is treated as a quantifier rather than a literal character and therefore never matches the real MIME type image/svg+xml. This is inconsistent with the allowlist implementation, which correctly applies both
GHSA
CarrierWave has a denylisted_content_type bypass via Unescaped Regex Metacharacters
ghsa·2026-05-27
CVE-2026-44587 [MEDIUM] CWE-116 CarrierWave has a denylisted_content_type bypass via Unescaped Regex Metacharacters
CarrierWave has a denylisted_content_type bypass via Unescaped Regex Metacharacters
### Summary
CarrierWave's content_type_denylist check fails to escape regex metacharacters in string entries, causing the denylist to silently not match the content types it is intended to block.
**Note**: CarrierWave is aware `#content_type_denylist is deprecated for the security reason`, but it still used by developers, and the problem here isn't denylist allows any filetype, and thats not a vulnerability in carrierwave, its an implementation problem in developers using CarrierWave, the problem is its denylist entries are interpolated directly into a regex without `Regexp.quote` or anchoring. The denylist is still useful when developers want to ban specific content types but allow everything else.
###
No detection rules found.
No public exploits indexed.
No writeups or analysis indexed.
2026-06-16
Published