Podatność typu XSS w bibliotece view_component dla Ruby on Rails pozwala na wstrzyknięcie złośliwego kodu HTML/JavaScript przez metodę around_render, która może zwracać niebezpieczne ciągi znaków z pominięciem mechanizmów escapowania. Stanowi to poważne zagrożenie dla aplikacji przetwarzających dane kontrolowane przez użytkownika.
▸ Pokaż oryginał (EN)
view_component is a framework for building reusable, testable, and encapsulated view components in Ruby on Rails. From 4.0.0 until 4.12.0, ViewComponent::Base#around_render can return HTML-unsafe strings that bypass the escaping behavior applied to normal #call return values. This creates an XSS risk when downstream applications use around_render to wrap, replace, instrument, or conditionally return content that includes user-controlled data, and ViewComponent::Collection#render_in can amplify the issue by joining per-item results and marking the entire output html_safe, converting raw unsafe output into an ActiveSupport::SafeBuffer. This issue is fixed in version 4.12.0.
Metoda ViewComponent::Base#around_render może zwracać ciągi znaków nieoznaczone jako HTML-safe, które omijają standardowy mechanizm escapowania stosowany do wartości zwracanych przez metodę #call. Gdy aplikacja używa around_render do owijania, zastępowania lub warunkowego zwracania treści zawierającej dane od użytkownika, dane te mogą trafić do przeglądarki bez właściwego escapowania. Sytuację dodatkowo pogarsza ViewComponent::Collection#render_in, który łączy wyniki renderowania poszczególnych elementów kolekcji i oznacza całość jako html_safe, przekształcając niebezpieczne dane wyjściowe w obiekt ActiveSupport::SafeBuffer, który jest traktowany przez framework jako bezpieczny.
Atakujący może wstrzyknąć i wykonać dowolny kod JavaScript w przeglądarce ofiary, co może prowadzić do kradzieży sesji, danych uwierzytelniających, przejęcia konta użytkownika lub wycieku poufnych informacji.
Należy zaktualizować bibliotekę view_component do wersji 4.12.0, w której problem został naprawiony. Patche dostępne są w referencjach producenta: https://github.com/ViewComponent/view_component/releases/tag/v4.12.0
Biblioteka view_component (ViewComponent) w wersjach od 4.0.0 do 4.11.x (przed 4.12.0) dla Ruby on Rails. Problem dotyczy aplikacji używających metody around_render z danymi kontrolowanymi przez użytkownika.
Podatność wymaga interakcji użytkownika (UI:R) oraz zalogowanego atakującego z niskimi uprawnieniami (PR:L), jednak jej wpływ jest oceniany jako wysoki zarówno dla poufności, jak i integralności w kontekście cross-site (S:C). Szczegółowe informacje dostępne w advisory GHSA-97jw-64cj-jc58.
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:NViewcomponent View Component
APPViewcomponent4.0.0 – 4.12.0 (bez)
Powiązane podatności
view_component to framework do budowania wielokrotnego użytku, testowalnych i enkapsulowanych komponentów wido...
view_component to framework do budowania wielokrotnego użytku, testowalnych i hermetycznych komponentów widoku...
view_component is a framework for building reusable, testable, and encapsulated view components in Ruby on Rai...