CVE-2024-21636
view_component Cross-site Scripting vulnerability
view_component is a framework for building reusable, testable, and encapsulated view components in Ruby on Rails. Versions prior to 3.9.0 and 2.83.0 have a cross-site scripting vulnerability that has the potential to impact anyone rendering a component directly from a controller with the view_component gem. Note that only components that define a #call method (i.e. instead of using a sidecar template) are affected. The return value of the #call method is not sanitized and can include user-defined content. In addition, the return value of the #output_postamble methodis not sanitized, which can also lead to cross-site scripting issues. Versions 3.9.0 and 2.83.0 have been released and fully mitigate both the #call and the #output_postamble vulnerabilities. As a workaround, sanitize the return value of #call.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- Low
- Integrity
- Low
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
6.1
view_component Cross-site Scripting vulnerability
view_component is a framework for building reusable, testable, and encapsulated view components in Ruby on Rails. Versions prior to 3.9.0 and 2.83.0 have a cross-site scripting vulnerability that has the potential to impact anyone rendering a component directly from a controller with the view_component gem. Note that only components that define a #call method (i.e. instead of using a sidecar template) are affected. The return value of the #call method is not sanitized and can include user-defined content. In addition, the return value of the #output_postamble methodis not sanitized, which can also lead to cross-site scripting issues. Versions 3.9.0 and 2.83.0 have been released and fully mitigate both the #call and the #output_postamble vulnerabilities. As a workaround, sanitize the return value of #call.
- Record
CVE-2024-21636- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
EUVDEUVD-2024-0446
6.1
view_component is a framework for building reusable, testable, and encapsulated view components in Ruby on Rails. Versions prior to 3.9.0 and 2.83.0 have a cross-site scripting vulnerability that has the potential to impact anyone rendering a component directly from a controller with the view_component gem. Note that only components that define a #call method (i.e. instead of using a sidecar template) are affected. The return value of the #call method is not sanitized and can include user-defined content. In addition, the return value of the #output_postamble methodis not sanitized, which can also lead to cross-site scripting issues. Versions 3.9.0 and 2.83.0 have been released and fully mitigate both the #call and the #output_postamble vulnerabilities. As a workaround, sanitize the return value of #call.
- Record
EUVD-2024-0446- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-wf2x-8w6j-qw37
6.1
view_component Cross-site Scripting vulnerability
Impact
What kind of vulnerability is it? Who is impacted?
This is an XSS vulnerability that has the potential to impact anyone rendering a component directly from a controller with the view_component gem. Note that only components that define a #call method (i.e. instead of using a sidecar template) are affected. The return value of the #call method is not sanitized and can include user-defined content.
In addition, the return value of the #output_postamble method is not sanitized, which can also lead to XSS issues.
Patches
Has the problem been patched? What versions should users upgrade to?
Versions 3.9.0 has been released and fully mitigates both the #call and the #output_postamble vulnerabilities.
Workarounds
Is there a way for users to fix or remediate the vulnerability without upgrading?
Sanitize the return value of #call, eg:
class MyComponent < ApplicationComponent
def call
html_escape("<div>#{user_input}</div>")
end
end
References
Are there any links users can visit to find out more?
https://github.com/ViewComponent/view_component/pull/1950
For more information
If you have any questions or comments about this advisory:
Open an issue in the github/view_component project.
- Record
GHSA-wf2x-8w6j-qw37- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
NVD
6.1
view_component is a framework for building reusable, testable, and encapsulated view components in Ruby on Rails. Versions prior to 3.9.0 and 2.83.0 have a cross-site scripting vulnerability that has the potential to impact anyone rendering a component directly from a controller with the view_component gem. Note that only components that define a #call method (i.e. instead of using a sidecar template) are affected. The return value of the #call method is not sanitized and can include user-defined content. In addition, the return value of the #output_postamble methodis not sanitized, which can also lead to cross-site scripting issues. Versions 3.9.0 and 2.83.0 have been released and fully mitigate both the #call and the #output_postamble vulnerabilities. As a workaround, sanitize the return value of #call.
- Record
CVE-2024-21636- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
OSV
6.1
view_component Cross-site Scripting vulnerability
view_component is a framework for building reusable, testable, and encapsulated view components in Ruby on Rails. Versions prior to 3.9.0 and 2.83.0 have a cross-site scripting vulnerability that has the potential to impact anyone rendering a component directly from a controller with the view_component gem. Note that only components that define a #call method (i.e. instead of using a sidecar template) are affected. The return value of the #call method is not sanitized and can include user-defined content. In addition, the return value of the #output_postamble methodis not sanitized, which can also lead to cross-site scripting issues. Versions 3.9.0 and 2.83.0 have been released and fully mitigate both the #call and the #output_postamble vulnerabilities. As a workaround, sanitize the return value of #call.
- Record
CVE-2024-21636- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
OSVGHSA-wf2x-8w6j-qw37
6.1
view_component Cross-site Scripting vulnerability
Impact
What kind of vulnerability is it? Who is impacted?
This is an XSS vulnerability that has the potential to impact anyone rendering a component directly from a controller with the view_component gem. Note that only components that define a #call method (i.e. instead of using a sidecar template) are affected. The return value of the #call method is not sanitized and can include user-defined content.
In addition, the return value of the #output_postamble method is not sanitized, which can also lead to XSS issues.
Patches
Has the problem been patched? What versions should users upgrade to?
Versions 3.9.0 has been released and fully mitigates both the #call and the #output_postamble vulnerabilities.
Workarounds
Is there a way for users to fix or remediate the vulnerability without upgrading?
Sanitize the return value of #call, eg:
class MyComponent < ApplicationComponent
def call
html_escape("<div>#{user_input}</div>")
end
end
References
Are there any links users can visit to find out more?
https://github.com/ViewComponent/view_component/pull/1950
For more information
If you have any questions or comments about this advisory:
Open an issue in the github/view_component project.
- Record
GHSA-wf2x-8w6j-qw37- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
view_componentRubyGems |
3.0.0 up to 3.9.0 | 3.9.0 |
view_componentRubyGems |
before 2.83.0 | 2.83.0 |
view_componentRubyGems |
3.0.0 up to 3.9.0, plus listed versions 3.1.03.2.03.3.03.4.03.5.03.6.03.7.03.8.0 |
3.9.0 |
view_componentRubyGems |
before 2.83.0, plus listed versions 1.16.01.17.02.0.02.1.02.10.0 Show 45 moreShow less2.11.02.11.12.12.02.13.02.14.02.14.12.15.02.16.02.17.02.17.12.18.02.18.12.18.22.19.02.19.12.2.02.2.12.2.22.20.02.21.02.22.02.22.12.23.02.23.12.23.22.24.02.25.02.25.12.26.02.26.12.27.02.28.02.29.02.3.02.30.02.31.02.31.12.31.22.32.02.33.02.34.02.35.02.36.02.37.02.38.0 |
2.83.0 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2024-21636 is a medium vulnerability (CVSS 6.1) in Github View Component, published January 4, 2024. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.50%, the 42nd percentile. Fixed in view_component 3.9.0.
References
github.com/ViewComponent/view_component/security/advisories/GHSA-wf2x-8w6j-qw37
github.com/ViewComponent/view_component/pull/1950
github.com/ViewComponent/view_component/pull/1962
github.com/ViewComponent/view_component/commit/0d26944a8d2730ea40e60eae23d70684483e5017
github.com/ViewComponent/view_component/commit/c43d8bafa7117cbce479669a423ab266de150697
nvd.nist.gov/vuln/detail/CVE-2024-21636
Left out here: 59 versions. The JSON record has them.