RailsAdmin Cross-site Scripting vulnerability in the list view
GHSA-8qgm-g2vv-vwvc · CVE-2024-39308
Published · Modified
AI SAST
Find this class of vulnerability in your own code
Corgea's AI-native static analysis detects vulnerabilities like this one across your repositories, ranks them by exploitability, and returns review-ready fixes.
Description
Impact
RailsAdmin list view has the XSS vulnerability, caused by improperly-escaped HTML title attribute.
The issue was originally reported in https://github.com/railsadminteam/rails_admin/issues/3686.
Patches
Upgrade to 3.1.4. The vulnerability itself was patched in 3.1.3 but it has a functionality issue.
Initially the vulnerability was thought to exist in versions before 3.0, but it didn't. 2.x users can stay on 2.2.1.
Workarounds
- Copy the index view (located under the path
app/views/rails_admin/main/index.html.erb) from the RailsAdmin version you use, and place it into your application by using the same path. - Open the view file by an editor, and change the way to populate the td tag:
<% properties.map{ |property| property.bind(:object, object) }.each do |property| %>
<% value = property.pretty_value %>
- <td class="<%= [property.sticky? && 'sticky', property.css_class, property.type_css_class].select(&:present?).join(' ') %>" title="<%= value %>">
+ <%= content_tag(:td, class: [property.sticky? && 'sticky', property.css_class, property.type_css_class].select(&:present?), title: strip_tags(value.to_s)) do %>
<%= value %>
- </td>
+ <% end %>
<% end %>
Note: The view file created by this needs to be removed after upgrading RailsAdmin afterwards, unless this old view continue to be used. Only do this if you can't upgrade RailsAdmin now for a reason.
References
https://owasp.org/www-community/attacks/xss/
https://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html#method-i-strip_tags
References
- WEB https://github.com/railsadminteam/rails_admin/security/advisories/GHSA-8qgm-g2vv-vwvc
- ADVISORY https://nvd.nist.gov/vuln/detail/CVE-2024-39308
- WEB https://github.com/railsadminteam/rails_admin/issues/3686
- WEB https://github.com/railsadminteam/rails_admin/commit/b5a287d82e2cbd1737a1a01e11ede2911cce7fef
- WEB https://github.com/railsadminteam/rails_admin/commit/d84b39884059c4ed50197cec8522cca029a17673
- PACKAGE https://github.com/railsadminteam/rails_admin
- WEB https://github.com/rubysec/ruby-advisory-db/blob/master/gems/rails_admin/CVE-2024-39308.yml
- WEB https://rubygems.org/gems/rails_admin/versions/2.3.0
- WEB https://rubygems.org/gems/rails_admin/versions/3.1.3
Ready to move
Start Securing
Free, no credit card | First findings in minutes