CVE-2023-51447: Decidim vulnerable to cross-site scripting (XSS) in the dynamic file uploads

Published Feb 20, 2024
·
Updated

Impact The dynamic file upload feature is subject to potential XSS attach in case the attacker manages to modify the file names of the records being uploaded to the server.

This appears in sections where the user controls the file upload dialogs themselves and has the technical knowledge to change the file names through the dynamic upload endpoint. Therefore I believe it would require the attacker to control the whole session of the particular user but in any case, this needs to be fixed.

Successful exploit of this vulneratibility would require the user to have successfully uploaded a file blob to the server with a malicious file name and then have the possibility to direct the other user to the edit page of the record where the attachment is attached.

The users are able to craft the direct upload requests themselves controlling the file name that gets stored to the database as shown here: https://github.com/rails/rails/blob/a967d355c6fee9ad9b8bd115d43bc8b0fc207e7e/activestorage/app/controllers/activestorage/directuploadscontroller.rb#L14

The attacker is able to change the filename e.g. to <svg onload=alert('XSS')> if they know how to craft these requests themselves. And then enter the returned blob ID to the form inputs manually by modifying the edit page source.

Therefore, anywhere we display these strings, we should properly escape them.

Patches PR #11612 fixes this problem both for 0.28.dev and 0.27.x.

Workarounds Disable dynamic uploads for the instance, e.g. from proposals.

References OWASP ASVS v4.0.3-5.1.3

Credits This issue was discovered in City of Helsinki's security audit against Decidim 0.27 done during September 2023. The security audit was implemented by Deloitte Finland.

Other sources

Decidim is a participatory democracy framework. Starting in version 0.27.0 and prior to versions 0.27.5 and 0.28.0, the dynamic file upload feature is subject to potential cross-site scripting attacks in case the attacker manages to modify the file names of the records being uploaded to the server. This appears in sections where the user controls the file upload dialogs themselves and has the technical knowledge to change the file names through the dynamic upload endpoint. Therefore I believe it would require the attacker to control the whole session of the particular user but in any case, this needs to be fixed. Successful exploit of this vulnerability would require the user to have successfully uploaded a file blob to the server with a malicious file name and then have the possibility to direct the other user to the edit page of the record where the attachment is attached. The users are able to craft the direct upload requests themselves controlling the file name that gets stored to the database. The attacker is able to change the filename e.g. to <svg onload=alert('XSS')> if they know how to craft these requests themselves. And then enter the returned blob ID to the form inputs manually by modifying the edit page source. Versions 0.27.5 and 0.28.0 contain a patch for this issue. As a workaround, disable dynamic uploads for the instance, e.g. from proposals.

NVD

Affected Software

3 affected componentsFixes available
rubygems/decidim-core>=0.27.0<0.27.5
0.27.5
rubygems/decidim>=0.27.0<0.27.5
0.27.5
decidim Decidim Ruby>=0.27.0<0.27.5

Event History

Feb 20, 2024
CVE Published
via MITRE·05:29 PM
Data Sourced
via MITRE·05:29 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·06:15 PM
DescriptionSeverityWeakness
Advisory Published
via GitHub·11:42 PM

Frequently Asked Questions

1

What is the severity of CVE-2023-51447?

CVE-2023-51447 has a moderate severity level as it exposes the application to potential XSS attacks through dynamic file uploads.

2

How do I fix CVE-2023-51447?

To fix CVE-2023-51447, upgrade to version 0.27.5 of the decidim or decidim-core packages.

3

What causes CVE-2023-51447?

CVE-2023-51447 is caused by inadequate validation of user-controlled file upload dialogs, allowing an attacker to modify file names.

4

Which software versions are affected by CVE-2023-51447?

CVE-2023-51447 affects decidim and decidim-core versions between 0.27.0 and 0.27.5, excluding 0.27.5 itself.

5

What type of vulnerability is CVE-2023-51447?

CVE-2023-51447 is classified as a cross-site scripting (XSS) vulnerability due to the mishandling of file uploads.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203