# CVE-2026-54498: ViewComponent XSS via around_render HTML-safety bypass

Source: https://junglewise.ai/threats/cve-2026-54498-viewcomponent-xss-via-around-render-html-safety-bypass  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-07-17. Updated: 2026-07-17  
License: CC BY 4.0 with a link back

CVE-2026-54498 · Severity: high · CVSS 8.7 · Published 2026-07-17

ViewComponent is a framework for building user interface components in Ruby on Rails applications. A security flaw allows certain component methods to bypass standard security protections that prevent malicious scripts from being injected into web pages. If an application uses these components to display user-provided data, an attacker could execute unauthorized scripts in other users' browsers, potentially leading to account takeover or data theft.

Technologies: [GitHub ViewComponent](https://junglewise.ai/threats/technologies/viewcomponent), [view_component (RubyGems)](https://junglewise.ai/threats/technologies/view-component). Vendors: [GitHub](https://junglewise.ai/threats/vendors/github), [RubyGems](https://junglewise.ai/threats/vendors/rubygems).

## Quick answers

**Is CVE-2026-54498 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-54498 being exploited in the wild.

**How severe is CVE-2026-54498?** High severity, with a CVSS score of 8.7, published 17 July 2026.

**Which products and versions are affected?** GitHub ViewComponent >= 4.0.0, < 4.12.0; view_component (RubyGems) >= 4.0.0, < 4.12.0, ECOSYSTEM:introduced=4.0.0,fixed=4.12.0.

**Is there a fix for CVE-2026-54498?** Yes. view_component (RubyGems): upgrade to 4.12.0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-54498 attacked?** It is attacked over the network, in a software library.

**Am I affected by CVE-2026-54498?** Check whether you run GitHub ViewComponent or view_component (RubyGems) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## How to fix

- view_component (RubyGems): upgrade to 4.12.0 or later

  ```sh
  bundle update view_component
  ```


## Technical details

A cross-site scripting (XSS) vulnerability exists in ViewComponent versions 4.0.0 through 4.11.x. The root cause is that 'ViewComponent::Base#around_render' does not apply the same HTML-escaping logic as the standard '#call' method, allowing HTML-unsafe strings to be rendered raw. This risk is significantly amplified when using 'ViewComponent::Collection#render_in', which joins per-item results and explicitly marks the entire output as 'html_safe', effectively laundering unsafe strings into trusted 'ActiveSupport::SafeBuffer' objects. An attacker can exploit this by providing malicious input that is subsequently processed by a component using 'around_render' for wrapping or instrumentation. The issue is fixed in version 4.12.0 by ensuring 'around_render' output is escaped and using 'safe_join' for collections.

## Affected products

- ViewComponent view_component >= 4.0.0, < 4.12.0

## Identifiers

- CVE-2026-54498
- GHSA-97jw-64cj-jc58

## Timeline

- 2026-06-04: patched: Fixes committed and version 4.12.0 released.
- 2026-07-17: disclosed: Public advisory published.

## References

- [https://github.com/ViewComponent/view_component/commit/48e5fd2d602344c7d33019fbc5c8b087e315bb78](https://github.com/ViewComponent/view_component/commit/48e5fd2d602344c7d33019fbc5c8b087e315bb78)
- [https://github.com/ViewComponent/view_component/commit/6796b2e89d0bd7b9d7d763a86275e5334731dd61](https://github.com/ViewComponent/view_component/commit/6796b2e89d0bd7b9d7d763a86275e5334731dd61)
- [https://github.com/ViewComponent/view_component/releases/tag/v4.12.0](https://github.com/ViewComponent/view_component/releases/tag/v4.12.0)
- [https://github.com/ViewComponent/view_component/security/advisories/GHSA-97jw-64cj-jc58](https://github.com/ViewComponent/view_component/security/advisories/GHSA-97jw-64cj-jc58)

## Related threats

- [ViewComponent stale render context in reused component instances](https://junglewise.ai/threats/cve-2026-54497-viewcomponent-stale-render-context-in-reused-component-instances)
- [ViewComponent path traversal in system test entrypoint](https://junglewise.ai/threats/cve-2026-44837-viewcomponent-path-traversal-in-system-test-entrypoint)
- [ViewComponent unauthorized template rendering in preview route](https://junglewise.ai/threats/cve-2026-44836-viewcomponent-unauthorized-template-rendering-in-preview-route)
- [view_component Cross-site Scripting vulnerability](https://junglewise.ai/threats/cve-2024-21636-view-component-cross-site-scripting-vulnerability)
- [Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') in view_component](https://junglewise.ai/threats/cve-2022-24722-improper-neutralization-of-input-during-web-page-generation-cross)
