CVE-2026-44587
ŚrednieCVSS 4.7Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 28 — wyżej niż 28% wszystkich znanych CVE
Streszczenie
W frameworku CarrierWave, w wersjach przed 2.2.7 i 3.1.3, sprawdzenie denylisty content_type_denylist nie poprawnie obsługuje metaznaki regex w wpisach tekstowych, co prowadzi do braku blokowania zamierzonych typów zawartości. W rezultacie aplikacje mogą być narażone na ataki XSS poprzez przesyłanie plików SVG zawierających złośliwy JavaScript.
Ocena ryzyka
Organizacje korzystające z CarrierWave mogą być narażone na ataki XSS, co może prowadzić do kradzieży danych użytkowników lub przejęcia sesji. Brak odpowiedniej ochrony przed złośliwymi plikami SVG stwarza poważne zagrożenie dla bezpieczeństwa aplikacji.
Rekomendacja
Zaleca się aktualizację frameworka CarrierWave do wersji 2.2.7 lub 3.1.3, aby naprawić problem z denylistą content_type_denylist. Dodatkowo, warto przeprowadzić audyt aplikacji w celu identyfikacji i usunięcia potencjalnych luk bezpieczeństwa związanych z obsługą plików SVG.
Oryginalny opis (angielski, źródło NVD)
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.

