CVE-2026-45086
Ruby vulnerability analysis and mitigation

Overview

CVE-2026-45086 is a broken access control vulnerability in the decidim-demographics module of the Decidim participatory democracy platform, where the demographics questionnaire admin editor is accessible to any authenticated participant without admin authorization checks. The affected route /admin/demographics/questions/edit_questions renders the admin editor interface without verifying whether the caller holds admin privileges. Affected versions are decidim-demographics >= 0.31.0 and < 0.31.5, and >= 0.32.0.rc1 and < 0.32.0. The vulnerability was discovered through a security audit organized by the Decidim Association and conducted by Radically Open Security, and was publicly disclosed on July 13, 2026. It carries a CVSS v3.1 base score of 5.4 (Medium) (GitHub Advisory, Decidim Advisory).

Technical details

The root cause is improper access control (CWE-284), classified under OWASP A01:2021 Broken Access Control. The decidim-demographics module's questions_controller and the has_questionnaire concern in decidim-forms failed to call enforce_permission_to before rendering the edit_questions and update_questions actions, meaning the admin route was reachable by any authenticated user. The fix, implemented in pull request #16665, adds explicit permission_subject methods and enforces permission checks on these actions, ensuring only users with admin-level access can reach the questionnaire editor (GitHub PR #16665, GitHub Advisory).

Impact

A low-privilege authenticated participant can access the demographics questionnaire admin editor interface, view question-management surfaces restricted to questionnaire managers, and potentially add or modify questionnaire questions. The confidentiality and integrity impacts are both low — the attacker can read admin-only UI surfaces and submit form actions, but access to question responses and settings was denied in testing. There is no availability impact, and the vulnerability scope is unchanged, limiting blast radius to the demographics questionnaire management functionality (GitHub Advisory, Decidim Advisory).

Exploitation steps

  1. Obtain a participant account: Register or log in as a normal (non-admin) participant at http://<target>/users/sign_in.
  2. Navigate directly to the admin editor: In the same authenticated browser session, visit http://<target>/admin/demographics/questions/edit_questions — the route does not check for admin privileges and renders the editor interface.
  3. Interact with the admin interface: Use the live update form action presented on the page to add, modify, or view questionnaire questions that should be restricted to questionnaire managers.
  4. Observe access boundaries: Note that routes for viewing question responses or settings may still return access-denied errors, limiting the scope of unauthorized actions to question management (GitHub Advisory, Decidim Advisory).

Indicators of compromise

  • Network: Authenticated HTTP GET or POST requests to /admin/demographics/questions/edit_questions or /admin/demographics/questions originating from non-admin user sessions.
  • Logs: Web server or application logs showing participant-level user accounts (non-admin roles) accessing /admin/demographics/questions endpoints, particularly edit_questions or update_questions actions.
  • Application Behavior: Unexpected changes to demographics questionnaire questions (additions, modifications) not attributable to known admin accounts.

Mitigation and workarounds

Upgrade decidim-demographics to version 0.31.5 (for the 0.31.x branch) or 0.32.0 (for the 0.32.x branch), which include the fix from pull request #16665 that adds proper permission enforcement to the questionnaire admin actions. As a temporary workaround, disable the decidim-demographics module entirely until the upgrade can be applied. The fix also improves permission checks in related modules (decidim-forms, decidim-elections, decidim-meetings, decidim-surveys) for defense in depth (GitHub Advisory, GitHub PR #16665).

Community reactions

The vulnerability was discovered as part of a formal security audit organized by the Decidim Association and conducted by Radically Open Security, financed by NGI, indicating a proactive security posture by the project maintainers. The fix was reviewed and merged by the Decidim core team with automated code review from CodeRabbit, and backported to both the v0.31 and v0.32 release branches (GitHub PR #16665, Decidim Advisory). No significant broader media coverage or social media discussion has been identified.

Additional resources


SourceThis report was generated using AI

Related Ruby vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2016-1000305MEDIUM6.9
  • Ruby logoRuby
  • guard-livereload
NoYesJul 31, 2026
CVE-2026-45377MEDIUM6.5
  • Ruby logoRuby
  • decidim-core
NoYesJul 31, 2026
CVE-2026-45376MEDIUM5.5
  • Ruby logoRuby
  • decidim-admin
NoYesJul 31, 2026
CVE-2026-45086MEDIUM5.4
  • Ruby logoRuby
  • decidim-demographics
NoYesJul 31, 2026
CVE-2026-45330MEDIUM4.9
  • Ruby logoRuby
  • decidim-verifications
NoYesJul 31, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management