CVE-2026-45378
Ruby vulnerability analysis and mitigation

Overview

CVE-2026-45378 is a sensitive information exposure vulnerability in Decidim, an open-source participatory democracy framework, where scanned identity-document images are exposed through reusable signed Active Storage disk URLs that do not require an authenticated session to access. The vulnerability affects the decidim-verifications RubyGems package in versions prior to 0.30.9, from 0.31.0.rc1 before 0.31.5, and from 0.32.0.rc1 before 0.32.0.rc2. It was discovered during a security audit organized by the Decidim Association and conducted by Radically Open Security, with the advisory published on July 13, 2026. The vulnerability carries a CVSS v3.1 base score of 7.5 (High) (GitHub Advisory, Decidim Advisory).

Technical details

The root cause is classified as CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor). The verification admin UI renders identity-document images using variant_url(...), which generates signed /rails/active_storage/disk/... URLs rather than routing file access through an authorization-checking controller. Because Decidim configures Active Storage service URLs with a seven-day validity window, the signed URL itself acts as the credential — anyone who obtains the URL can download the underlying document without any Decidim session for up to seven days. The signed URLs are embedded directly into the HTML of admin review pages (pending and confirmation views), making them accessible via browser history, logs, screenshots, analytics tooling, or malicious browser extensions (GitHub Advisory, Decidim Advisory).

Impact

Exploitation allows any party who obtains a signed Active Storage URL — through browser history, copy-paste, support tickets, logs, or network interception — to download scanned identity-verification documents (e.g., government-issued IDs) without authenticating to Decidim. The exposure window is up to seven days per URL, and the affected data constitutes highly sensitive personal information subject to privacy regulations. The impact is limited to confidentiality (no integrity or availability impact), and only affects organizations using the "Identity documents" verification feature (Decidim Advisory).

Exploitability

The vulnerability has a low attack complexity and requires no privileges or user interaction, making it automatable and straightforward to exploit once a signed URL is obtained. The NVD SSVC assessment classifies exploitation status as "poc" (proof-of-concept available), with reproduction steps publicly documented in the advisory. The EPSS score is approximately 0.303% (23rd percentile), indicating a relatively low but non-negligible probability of exploitation in the wild. There is no current evidence of active in-the-wild exploitation or CISA KEV catalog inclusion (GitHub Advisory, Decidim Advisory).

Exploitation steps

  1. Identify a target instance: Locate a Decidim instance running an affected version (< 0.30.9, 0.31.0.rc1–0.31.4, or 0.32.0.rc1) that has the "Identity documents" verification feature enabled.
  2. Submit a verification request: As a normal user, navigate to /id_documents/authorizations/new and submit an identity document verification request with an image attachment.
  3. Access the admin review page: Log in as an administrator and navigate to /admin/id_documents to view pending verification requests.
  4. Harvest the signed Active Storage URL: Open browser DevTools (Network tab), reload the admin review page, and copy a request URL matching the pattern /rails/active_storage/disk/<token>.
  5. Replay the URL without authentication: Open a private/incognito browser window where no Decidim session exists, paste the copied URL, and confirm the identity document image loads successfully without any authentication.
  6. Exfiltrate or share the URL: The signed URL remains valid for approximately seven days, allowing the attacker to share, store, or use it to download the sensitive identity document at any time within that window (Decidim Advisory, GitHub Advisory).

Indicators of compromise

  • Network: Unauthenticated HTTP GET requests to /rails/active_storage/disk/<token> paths originating from IP addresses or user agents not associated with active admin sessions; repeated access to the same signed URL from different IP addresses or browsers.
  • Logs: Web server or application logs showing successful (HTTP 200) responses to /rails/active_storage/disk/ URLs from sessions lacking a valid Decidim authentication cookie; access log entries for these URLs outside of normal admin working hours.
  • File System: No direct file system indicators, as exploitation occurs via URL replay without server-side file modification.
  • Application: Admin audit logs (if enabled) showing identity document review page loads followed by access to the same blob URL from a different session or IP address (Decidim Advisory).

Mitigation and workarounds

Decidim has released patched versions 0.30.9, 0.31.5, and 0.32.0.rc2 (and 0.32.0 final) that address this vulnerability by routing file access through an authorization-checking controller instead of exposing raw signed disk URLs. Organizations unable to upgrade immediately should disable the "Identity documents" verification feature as a temporary workaround. Upgrading to a patched version is the recommended long-term remediation (GitHub Advisory, Decidim Advisory).

Community reactions

The vulnerability was discovered through a formal security audit organized by the Decidim Association and conducted by Radically Open Security, funded by NGI, indicating a proactive security posture by the project. The advisory credits coordinator andreslucena and references OWASP A01:2021 (Broken Access Control) as the relevant security standard. No significant broader media coverage or notable community controversy has been identified beyond the official advisory (Decidim Advisory).

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-2026-55107CRITICAL10
  • Ruby logoRuby
  • kobako
NoYesAug 18, 2026
CVE-2026-61666HIGH8.9
  • Ruby logoRuby
  • gitlab-rails-ce-18.1
NoYesAug 17, 2026
CVE-2026-73648MEDIUM5.1
  • Ruby logoRuby
  • ruby3.2-rails-8.0
NoYesAug 13, 2026
CVE-2026-73426MEDIUM4.6
  • JavaScript logoJavaScript
  • ruby3.3-rails-8.1
NoYesAug 18, 2026
CVE-2026-73428MEDIUM4.6
  • JavaScript logoJavaScript
  • trix
NoYesAug 13, 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