{"answers":{"affected":"14 open source packages ship an affected version, including decidim, decidim-admin and decidim-system. It affects 2 products.","exploited":"There is no known exploitation of CVE-2023-48220 in the wild and no public exploit code.","fix":"Upgrade decidim to a fixed version for your release line: 0.26.9 or 0.27.5.","what":"CVE-2023-48220 is a medium-severity vulnerability in decidim, published on 20 Feb 2024. An attacker needs administrator access to exploit it, and only if a user opens a file or follows a link."},"fix_prompt":"Check this codebase for CVE-2023-48220 and fix it if it is affected.\n\nWhat it is: CVE-2023-48220 is a medium-severity vulnerability in decidim, published on 20 Feb 2024. An attacker needs administrator access to exploit it, and only if a user opens a file or follows a link.\nExploitation: There is no known exploitation of CVE-2023-48220 in the wild and no public exploit code.\n\nAffected packages and fixed versions:\n- decidim (RubyGems): affected from 0.0.1.alpha3; fixed in 0.26.9\n- decidim (RubyGems): affected from 0.0.1.alpha3; fixed in 0.26.9\n- decidim (RubyGems): affected from 0.27.0; fixed in 0.27.5\n- decidim (RubyGems): affected from 0.27.0; fixed in 0.27.5\n- decidim-admin (RubyGems): affected from 0.0.1.alpha3; fixed in 0.26.9\n- decidim-admin (RubyGems): affected from 0.0.1.alpha3; fixed in 0.26.9\n- decidim-admin (RubyGems): affected from 0.27.0; fixed in 0.27.5\n- decidim-admin (RubyGems): affected from 0.27.0; fixed in 0.27.5\n- decidim-system (RubyGems): affected from 0.0.1.alpha3; fixed in 0.26.9\n- decidim-system (RubyGems): affected from 0.0.1.alpha3; fixed in 0.26.9\n- decidim-system (RubyGems): affected from 0.27.0; fixed in 0.27.5\n- decidim-system (RubyGems): affected from 0.27.0; fixed in 0.27.5\n\nTask:\n1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.\n2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2023-48220/ (Markdown: https://insights.sbomify.com/CVE-2023-48220/index.md)","id":"CVE-2023-48220","markdown":"https://insights.sbomify.com/CVE-2023-48220/index.md","name":"CVE-2023-48220","record":{"aliases":["GHSA-w3q8-m492-4pwp"],"analysis":{"component_type":"web_application","fix_type":"upgrade","impacts":["account_takeover"],"network_reachable":"yes","non_default_config":false,"product_category":"Decidim participatory democracy","requires_auth":"high_privilege","summary":"Attackers can accept expired invitations via password reset, potentially taking over accounts in Decidim applications.","user_interaction":"required","vuln_class":"security_feature_bypass"},"analysis_generated_by":"qwen3.8-flash-next","assigner":"GitHub_M","cpe":[{"product":"decidim","vendor":"decidim"},{"product":"devise_invitable","vendor":"scambra"}],"cvss":{"score":5.7,"severity":"medium","source":"cna","vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:H/I:H/A:N","version":"3.1"},"cwes":[{"id":"CWE-672","name":"Operation on a Resource after Expiration or Release"}],"description":"Decidim is a participatory democracy framework. Starting in version 0.4.rc3 and prior to version 2.0.9 of the `devise_invitable` gem, the invites feature allows users to accept the invitation for an unlimited amount of time through the password reset functionality. This issue creates vulnerable dependencies starting in version 0.0.1.alpha3 and prior to versions 0.26.9, 0.27.5, and 0.28.0 of the `decidim,` `decidim-admin`, and `decidim-system` gems. When using the password reset functionality, the `devise_invitable` gem always accepts the pending invitation if the user has been invited. The only check done is if the user has been invited but the code does not ensure that the pending invitation is still valid as defined by the `invite_for` expiry period. Decidim sets this configuration to `2.weeks` so this configuration should be respected. The bug is in the `devise_invitable` gem and should be fixed there and the dependency should be upgraded in Decidim once the fix becomes available. `devise_invitable` to version `2.0.9` and above fix this issue. Versions 0.26.9, 0.27.5, and 0.28.0 of the `decidim,` `decidim-admin`, and `decidim-system` gems contain this fix. As a workaround, invitations can be cancelled directly from the database.","ecosystems":["RubyGems"],"exploits":{"exploitdb":0,"first_seen":null,"github_poc":0,"max_poc_stars":null,"metasploit":0,"nuclei":0,"refs":[],"tier":"none_known"},"has_fix":true,"headline":"Decidim's devise_invitable gem vulnerable to circumvention of invitation token expiry period","id":"CVE-2023-48220","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":"RubyGems","product":null,"products":[],"type":"security_feature_bypass","year":"2023"},"n_packages":14,"n_references":9,"next":{"headline":"wire-avs remote format string vulnerability","id":"CVE-2023-48221"},"packages":[{"ecosystem":"RubyGems","fixed":["0.26.9"],"introduced":["0.0.1.alpha3"],"last_affected":[],"package":"decidim","purl":null,"source":"GHSA-w3q8-m492-4pwp"},{"ecosystem":"RubyGems","fixed":["0.26.9"],"introduced":["0.0.1.alpha3"],"last_affected":[],"package":"decidim","purl":"pkg:gem/decidim","source":"GHSA-w3q8-m492-4pwp"},{"ecosystem":"RubyGems","fixed":["0.27.5"],"introduced":["0.27.0"],"last_affected":[],"package":"decidim","purl":null,"source":"GHSA-w3q8-m492-4pwp"},{"ecosystem":"RubyGems","fixed":["0.27.5"],"introduced":["0.27.0"],"last_affected":[],"package":"decidim","purl":"pkg:gem/decidim","source":"GHSA-w3q8-m492-4pwp"},{"ecosystem":"RubyGems","fixed":["0.26.9"],"introduced":["0.0.1.alpha3"],"last_affected":[],"package":"decidim-admin","purl":null,"source":"GHSA-w3q8-m492-4pwp"},{"ecosystem":"RubyGems","fixed":["0.26.9"],"introduced":["0.0.1.alpha3"],"last_affected":[],"package":"decidim-admin","purl":"pkg:gem/decidim-admin","source":"GHSA-w3q8-m492-4pwp"},{"ecosystem":"RubyGems","fixed":["0.27.5"],"introduced":["0.27.0"],"last_affected":[],"package":"decidim-admin","purl":null,"source":"GHSA-w3q8-m492-4pwp"},{"ecosystem":"RubyGems","fixed":["0.27.5"],"introduced":["0.27.0"],"last_affected":[],"package":"decidim-admin","purl":"pkg:gem/decidim-admin","source":"GHSA-w3q8-m492-4pwp"},{"ecosystem":"RubyGems","fixed":["0.26.9"],"introduced":["0.0.1.alpha3"],"last_affected":[],"package":"decidim-system","purl":null,"source":"GHSA-w3q8-m492-4pwp"},{"ecosystem":"RubyGems","fixed":["0.26.9"],"introduced":["0.0.1.alpha3"],"last_affected":[],"package":"decidim-system","purl":"pkg:gem/decidim-system","source":"GHSA-w3q8-m492-4pwp"},{"ecosystem":"RubyGems","fixed":["0.27.5"],"introduced":["0.27.0"],"last_affected":[],"package":"decidim-system","purl":null,"source":"GHSA-w3q8-m492-4pwp"},{"ecosystem":"RubyGems","fixed":["0.27.5"],"introduced":["0.27.0"],"last_affected":[],"package":"decidim-system","purl":"pkg:gem/decidim-system","source":"GHSA-w3q8-m492-4pwp"},{"ecosystem":"RubyGems","fixed":["2.0.9"],"introduced":["0.4.rc3"],"last_affected":[],"package":"devise_invitable","purl":null,"source":"GHSA-w3q8-m492-4pwp"},{"ecosystem":"RubyGems","fixed":["2.0.9"],"introduced":["0.4.rc3"],"last_affected":[],"package":"devise_invitable","purl":"pkg:gem/devise_invitable","source":"GHSA-w3q8-m492-4pwp"}],"prev":{"headline":"Special characters in unescaped text nodes can trigger mXSS in TinyMCE","id":"CVE-2023-48219"},"products":["decidim"],"published":"2024-02-20","related":[{"cvss_score":9.3,"headline":"Decidim has a Cross-site scripting (XSS) vulnerability via user name field","id":"CVE-2026-23891","kev_date_added":null,"published":"2026-04-13"},{"cvss_score":9.1,"headline":"Decidim has broken access control in templates","id":"CVE-2023-36465","kev_date_added":null,"published":"2023-10-06"},{"cvss_score":8.2,"headline":"Decidim's private data exports can lead to data leaks","id":"CVE-2025-65017","kev_date_added":null,"published":"2026-02-03"},{"cvss_score":8.1,"headline":"Decidim Cross-site Scripting vulnerability in the external link redirections","id":"CVE-2023-32693","kev_date_added":null,"published":"2023-07-11"},{"cvss_score":8.1,"headline":"Decidim Cross-site Scripting vulnerability in the processes filter","id":"CVE-2023-34089","kev_date_added":null,"published":"2023-07-11"},{"cvss_score":7.7,"headline":"Decidim allows cross-site scripting (XSS) in the online or hybrid meeting embeds","id":"CVE-2024-45594","kev_date_added":null,"published":"2024-11-13"},{"cvss_score":7.5,"headline":"Decidim amendments can be accepted or rejected by anyone","id":"CVE-2026-40869","kev_date_added":null,"published":"2026-04-21"}],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"CC BY 4.0","name":"GitHub Advisory Database","prefix":"GHSA"},{"class":"attribution","licence":"US public information, NVD API terms","name":"NVD"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"}],"ssvc":{"automatable":"no","exploitation":"none","technical_impact":"total"},"state":"PUBLISHED","updated":"2025-04-24","vendors":["decidim"]},"summary":"Attackers can accept expired invitations via password reset, potentially taking over accounts in Decidim applications.","url":"https://insights.sbomify.com/CVE-2023-48220/"}