PT-2026-60388 · Rubygems · View
CVE-2026-54497
·
Published
2026-07-15
·
Updated
2026-07-17
CVSS v3.1
6.8
Medium
| Vector | AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N |
Name of the Vulnerable Software and Affected Versions
view component versions 4.0.0 through 4.11.0
Description
ViewComponent::Base instances retain render-scoped objects across calls to the render in() function. If the same component, collection, or spacer component instance is reused across different requests, users, tenants, or threads, subsequent renders may utilize stale data. This includes stale helpers, controller, request, view flow, format/variant details, and slot child context from a previous render.This behavior can lead to several security issues, such as authorization-aware components rendering privileged UI for lower-privileged users, the generation of links using a stale Host header, and the leakage of slot or helper state. Additionally, it can cause request context mixing during concurrent rendering.
Technical details indicate that the issue stems from the memoization of request-scoped values using
||= or storage for later slot/collection rendering without a full reset of the render-scoped state at the start of each render. Specifically, the following variables are affected: vc original view context, @lookup context, @view flow, @ vc requested details, @ vc controller, @ vc helpers, and @ vc request.Recommendations
Update view component to version 4.12.0.
As a temporary mitigation, avoid reusing the same component, collection, or spacer component instance across different render contexts; ensure a new instance is created for each render (e.g., using
render(MyComponent.new(...))).Exploit
Fix
Race Condition
Exposure of Resource to Wrong Sphere
Found an issue in the description? Have something to add? Feel free to write us 👾
Related Identifiers
Affected Products
View