Stored XSS (Cross Site Scripting) in html content based fields of avo
Description
Avo is an open source ruby on rails admin panel creation framework. In affected versions some avo fields are vulnerable to Cross Site Scripting (XSS) when rendering html based content. Attackers do need form edit privilege in order to successfully exploit this vulnerability, but the results are stored and no specific timing is required. This issue has been addressed in commit 7891c01e which is expected to be included in the next release of avo. Users are advised to configure CSP headers for their application and to limit untrusted user access as a mitigation.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
avoRubyGems | < 2.33.3 | 2.33.3 |
avoRubyGems | >= 3.0.0.pre1, <= 3.0.0.pre12 | — |
Affected products
1Patches
17891c01e1fbaMerge pull request from GHSA-5cr9-5jx3-2g39
6 files changed · +7 −7
app/components/avo/alert_component.html.erb+1 −1 modified@@ -10,7 +10,7 @@ </div> <div class="ml-3 w-0 flex-1 pt-0.5"> <p class="text-sm leading-5 font-semibold"> - <%== message %> + <%= sanitize message %> </p> </div> <div class="ml-4 flex-shrink-0 flex items-center">
app/components/avo/fields/common/heading_component.html.erb+1 −1 modified@@ -3,7 +3,7 @@ <% if empty %> <% elsif value.present? %> <% if as_html %> - <%== value %> + <%= sanitize value %> <% else %> <div class="font-semibold uppercase"><%= value %></div> <% end %>
app/components/avo/fields/trix_field/edit_component.html.erb+1 −1 modified@@ -20,7 +20,7 @@ }, input: trix_id, placeholder: @field.placeholder do %> - <%== @field.value %> + <%= sanitize @field.value %> <% end %> <%= @form.text_area @field.id, class: classes("w-full hidden"),
app/components/avo/fields/trix_field/show_component.html.erb+1 −1 modified@@ -8,7 +8,7 @@ <%= link_to t('avo.show_content'), 'javascript:void(0);', class: 'font-bold inline-block', data: { action: 'click->hidden-input#showContent' } %> <% end %> <div class="<%= content_classes %> " data-hidden-input-target="content"> - <%== @field.value %> + <%= sanitize @field.value %> </div> </div> <% end %>
app/components/avo/field_wrapper_component.html.erb+2 −2 modified@@ -24,13 +24,13 @@ <div class="text-red-600 mt-2 text-sm"><%= record.errors.full_messages_for(field.id).to_sentence %></div> <% end %> <% if help.present? %> - <div class="text-gray-600 mt-2 text-sm"><%== help %></div> + <div class="text-gray-600 mt-2 text-sm"><%= sanitize help %></div> <% end %> <% end %> </div> </div> <% if params[:avo_debug].present? %> <!-- Raw value: --> - <!-- <%== field.value.inspect %> --> + <!-- <%= sanitize field.value.inspect %> --> <% end %> <% end %>
app/components/avo/index/field_wrapper_component.html.erb+1 −1 modified@@ -19,6 +19,6 @@ <% end %> <% if params[:avo_debug].present? %> <!-- Raw value: --> - <!-- <%== @field.value.inspect %> --> + <!-- <%= sanitize @field.value.inspect %> --> <% end %> <% end %>
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
6- github.com/advisories/GHSA-5cr9-5jx3-2g39ghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2023-34103ghsaADVISORY
- github.com/avo-hq/avo/commit/7891c01e1fba9ca5d7dbccc43d27f385e5d08563ghsax_refsource_MISCWEB
- github.com/avo-hq/avo/releases/tag/v2.33.3ghsaWEB
- github.com/avo-hq/avo/security/advisories/GHSA-5cr9-5jx3-2g39ghsax_refsource_CONFIRMWEB
- github.com/rubysec/ruby-advisory-db/blob/master/gems/avo/CVE-2023-34103.ymlghsaWEB
News mentions
0No linked articles in our index yet.