Cross-site Scripting (XSS) - Stored in spinacms/spina
Description
Cross-site Scripting (XSS) - Stored in GitHub repository spinacms/spina prior to 2.15.1.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
Stored XSS in Spina CMS allows authenticated users with page editing permissions to inject arbitrary JavaScript via unsanitized page titles.
Vulnerability
Description
CVE-2023-3445 is a stored cross-site scripting (XSS) vulnerability in Spina CMS, a Ruby on Rails content management system. The root cause is insufficient sanitization of the page title attribute when displayed in the admin interface's delete confirmation dialog. The commit that fixes the issue [4] shows the vulnerability originates in the view where @page.title is directly interpolated into a JavaScript-enabled context without sanitization. Specifically, the confirm_message parameter of the delete button form data was rendering the raw page title, allowing an attacker to inject malicious HTML or JavaScript.
Exploitation
An authenticated user with permission to create or edit pages can exploit this vulnerability. By setting a page title to a malicious payload (e.g., ``), the payload becomes stored in the database. When any administrator (including those with higher privileges) visits the page listing or uses the delete functionality, the unsanitized title is rendered in the confirmation dialog, executing the injected script in the context of the admin's browser session [1]. No additional user interaction beyond viewing the affected page list is required.
Impact
Successful exploitation allows an attacker to execute arbitrary JavaScript in the context of an authenticated administrator's session within the Spina admin panel. This could lead to session hijacking, defacement of administrative content, theft of sensitive tokens or cookies, and potentially privilege escalation by performing actions on behalf of the victim administrator. Since the vulnerability is stored, the payload persists and can affect multiple users over time, increasing its severity.
Mitigation
The vulnerability was addressed in Spina version 2.15.1 by sanitizing the page title using Rails' sanitize helper before passing it to the confirmation dialog [1][4]. Users are strongly advised to upgrade to version 2.15.1 or later. No workarounds are publicly documented; patching is the recommended course of action. The fix was released on June 28, 2023, and the vulnerability has been publicly disclosed [1][2].
AI Insight generated on May 20, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
spinaRubyGems | < 2.15.1 | 2.15.1 |
Affected products
2- spinacms/spinacms/spinav5Range: unspecified
Patches
11 file changed · +1 −1
app/components/spina/pages/actions_component.html.erb+1 −1 modified@@ -40,7 +40,7 @@ <% end %> <% if @page.deletable? %> - <%= button_to t('spina.pages.delete'), helpers.spina.admin_page_path(@page), method: :delete, class: "block w-full text-left px-4 py-2 text-sm leading-5 font-medium text-red-500 cursor-pointer bg-white hover:bg-red-100 hover:bg-opacity-50 hover:text-red-500 focus:outline-none focus:bg-gray-100 focus:text-gray-900", form: {data: {controller: "confirm", confirm_message: t('spina.pages.delete_confirmation', subject: @page.title)}} %> + <%= button_to t('spina.pages.delete'), helpers.spina.admin_page_path(@page), method: :delete, class: "block w-full text-left px-4 py-2 text-sm leading-5 font-medium text-red-500 cursor-pointer bg-white hover:bg-red-100 hover:bg-opacity-50 hover:text-red-500 focus:outline-none focus:bg-gray-100 focus:text-gray-900", form: {data: {controller: "confirm", confirm_message: t('spina.pages.delete_confirmation', subject: sanitize(@page.title))}} %> <% else %> <span class="block px-4 py-2 text-sm leading-5 text-gray-400"><%=t 'spina.pages.cannot_be_deleted' %></span> <% end %>
Vulnerability mechanics
Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
5- github.com/advisories/GHSA-97wh-6hmj-g8j9ghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2023-3445ghsaADVISORY
- github.com/rubysec/ruby-advisory-db/blob/master/gems/spina/CVE-2023-3445.ymlghsaWEB
- github.com/spinacms/spina/commit/9adfe7b4807b3cc10dbb7351a26cc32f5d8c14a3ghsaWEB
- huntr.dev/bounties/18a74a9d-4a2d-4bf8-ae62-56a909427070ghsaWEB
News mentions
0No linked articles in our index yet.