Multiple possible admin XSS vulnerabilities

190 views
Skip to first unread message

John Hawthorn

unread,
Feb 23, 2016, 12:05:48 PM2/23/16
to solidus-...@googlegroups.com
Multiple possible admin XSS vulnerabilities

Versions Affected: All versions of Spree and Solidus
Not affected: None.
Fixed Versions: Solidus 1.0.5, 1.1.3, 1.2.1
Severity: Medium

Impact
------
Several vulnerabilities allow one admin user to inject HTML into various pages
on the admin. This can lead to privilege escalation if the site is configured
with multiple different admin roles. This would also be exploitable if an
attacker had the ability to name products, variants, option types, or option
values.

The vulnerability exists both through use of select2 formatters without
escaping as well as misuse of .html_safe and raw().

Additionally, some of the helpers in the admin, button_link_to and
link_to_with_icon, did not escape input as one would expect if they were
following the standard rails conventions. If the text argument of these helpers
contained user input, an attacker would be able to inject HTML onto the page.
This is not exploitable by default in the admin, as no user input is provided
to these methods, but could be exploitable due to admin customizations.


Releases
--------
The fixed releases are available on rubygems as well as in the github branches

Workarounds
-----------

Protecting against a malicious admin user requires several changes, and
we aren't able to provide a suitable workaround.

If you are unable to upgrade or apply these patches, and do not have separate
admin roles, audit your use of text_for_button_link, button_link_to, and
link_to_with_icon to ensure they are never passed user input (including any
values saved to the database).


--
John Hawthorn
1_0-Remove-text_for_button_link-helper.patch
1_2-Sanitize-all-select2-inputs.patch
1_2-Use-avoid-use-of-raw-in-link_to_with_icon.patch
1_2-Use-safe_join-instead-of-html_safe-where-possible.patch
1_0-Sanitize-all-select2-inputs.patch
1_0-Use-avoid-use-of-raw-in-link_to_with_icon.patch
1_0-Use-safe_join-instead-of-html_safe-where-possible.patch
1_1-Remove-text_for_button_link-helper.patch
1_1-Sanitize-all-select2-inputs.patch
1_1-Use-avoid-use-of-raw-in-link_to_with_icon.patch
1_1-Use-safe_join-instead-of-html_safe-where-possible.patch
1_2-Remove-text_for_button_link-helper.patch
Reply all
Reply to author
Forward
0 new messages