{"id":"GHSA-xgh5-w62m-8mpr","summary":"CI4MS: Menu Management (Posts) Full Account Takeover for All-Roles & Privilege-Escalation via Stored DOM XSS","details":"## Summary\n### **Vulnerability: Stored DOM XSS via Posts Added to Menu (Persistent Payload Injection)**\n- Stored Cross-Site Scripting via Unsafe Rendering of Post Entries in Menu Management\n\n### Description\nThe application fails to properly sanitize user-controlled input when **adding Posts to navigation menus** through the Menu Management functionality. Post-related data selected via the Posts section is stored server-side and rendered without proper output encoding.\n\nThese stored values are later rendered unsafely within administrative dashboards and public-facing navigation menus, resulting in stored DOM-based cross-site scripting (XSS).\n\n### Affected Functionality\n- Menu Management – Posts section\n- Adding posts to navigation menus\n- Menu storage and rendering logic\n\n### Attack Scenario\n- An attacker creates or controls a post containing a malicious JavaScript payload.\n- The attacker adds the post to the menu using the **Posts** functionality in Menu Manager.\n- The application stores the menu entry without sanitization or encoding.\n- The payload persists and executes whenever the menu is rendered.\n\n### Impact\n- Persistent Stored DOM XSS\n- Execution of arbitrary JavaScript in victims’ browsers\n- Privilege escalation in administrative contexts\n- Full administrator account takeover\n- Full account takeover across all roles\n- Full compromise of the entire application via global navigation execution\n\nEndpoint:\n- `/backend/menu/`\n\n## Steps To Reproduce (POC)\n1. Navigate to Menu Management\n2. Use the **Posts** section to add a post containing an XSS payload such as:\n`\u003cimg src=x onerror=alert(document.domain)\u003e`\n3. Save the menu\n4. View the menu in the administrative panel or any public-facing page\n5. Observe the JavaScript payload executing automatically\n\n## Remediation\n\n- **Avoid unsafe DOM manipulation methods:** Do not use `.html()`, `innerHTML`, or similar sink functions in client-side JavaScript or server-side templating (e.g., PHP). Even when user input flowing into these sinks is not immediately apparent, they can introduce Cross-Site Scripting (XSS) vulnerabilities that an attacker may exploit.\n\n- **Apply output encoding:** Implement HTML entity encoding on all user-controlled data before rendering it in the browser. This helps neutralize potentially malicious input.\n\n- **Implement input sanitization:** Ensure that all user-supplied input is properly sanitized before processing or output. Currently, no sanitization mechanisms are in place, which should be addressed as a priority.\n\n- **Enforce security headers and cookie attributes:**\n  - **Content Security Policy (CSP):** Define and enforce a strict CSP to limit the execution of unauthorized scripts.\n  - **HttpOnly flag:** Set the `HttpOnly` attribute on session cookies to prevent client-side script access.\n  - **SameSite attribute:** Configure the `SameSite` cookie attribute to mitigate Cross-Site Request Forgery (CSRF) risks.\n  - **Secure flag:** Ensure all cookies are transmitted only over HTTPS by enabling the `Secure` attribute.\n\n  These measures collectively reduce the impact of XSS and help prevent escalation paths such as CSRF via XSS.\n\n# Ready Video POC:\nhttps://mega.nz/file/PcMiUA5K#L2RlZJa340Q8K42TksxiXMuo_9XsRYPi14-WvBnak2A","aliases":["CVE-2026-34565"],"modified":"2026-04-06T17:38:20.506869Z","published":"2026-04-01T22:05:45Z","database_specific":{"severity":"CRITICAL","github_reviewed":true,"github_reviewed_at":"2026-04-01T22:05:45Z","nvd_published_at":"2026-04-01T22:16:20Z","cwe_ids":["CWE-79"]},"references":[{"type":"WEB","url":"https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-xgh5-w62m-8mpr"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-34565"},{"type":"PACKAGE","url":"https://github.com/ci4-cms-erp/ci4ms"},{"type":"WEB","url":"https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0"}],"affected":[{"package":{"name":"ci4-cms-erp/ci4ms","ecosystem":"Packagist","purl":"pkg:composer/ci4-cms-erp/ci4ms"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.31.0.0"}]}],"versions":["0.21.0","0.21.1","0.21.2","0.21.3","0.21.3.1","0.21.3.2","0.21.3.3","0.21.3.4","0.21.3.5","0.21.3.6","0.21.3.7","0.23.0.0","0.23.0.1","0.23.0.2","0.23.1.0","0.24.0.0","0.24.0.16","0.24.0.18","0.24.0.19","0.24.0.20","0.24.0.27","0.24.0.42","0.24.0.45","0.24.0.60","0.25.0.0","0.25.0.1","0.25.0.2","0.25.0.30","0.25.0.39","0.25.0.43","0.25.1.0","0.25.2.0","0.25.3.0","0.26.0.0","0.26.1.0","0.26.2.0","0.26.3.0","0.26.3.1","0.26.3.2","0.26.3.3","0.26.3.4","0.27.0.0","0.28.0.0","0.28.3.0","0.28.4.0","0.28.5.0","0.28.6.0"],"database_specific":{"last_known_affected_version_range":"\u003c= 0.28.6.0","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/04/GHSA-xgh5-w62m-8mpr/GHSA-xgh5-w62m-8mpr.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L"}]}