{"id":"CVE-2026-52781","summary":"OpenProject: Stored XSS on openproject.example.com through /api/v3/projects/{project}/work_packages via POST parameter \"description\"","details":"OpenProject is open-source, web-based project management software. Prior to 17.3.3 and 17.4.1, the HTML sanitizer grants \u003cmacro\u003e elements unrestricted data-* attributes via :data wildcard. An attacker injects data-controller=\"poll-for-changes\" into a work package description, causing Stimulus.js to mount a controller that fetches an attacker-uploaded attachment and passes it to renderStreamMessage(). This executes arbitrary Turbo Stream actions — including redirect_to — in every victim's authenticated browser session, redirecting them to an attacker-controlled server. This vulnerability is fixed in 17.3.3 and 17.4.1.","aliases":["GHSA-q33w-f822-hg8x"],"modified":"2026-07-15T01:49:07.759704071Z","published":"2026-06-26T19:00:10.717Z","database_specific":{"cna_assigner":"GitHub_M","cwe_ids":["CWE-79"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/52xxx/CVE-2026-52781.json"},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/52xxx/CVE-2026-52781.json"},{"type":"ADVISORY","url":"https://github.com/opf/openproject/security/advisories/GHSA-q33w-f822-hg8x"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-52781"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/opf/openproject","events":[{"introduced":"0"},{"fixed":"5ee515c5c80c3aaf1e7527f63e4e69798aef1b29"},{"introduced":"57fb3abf08b0075149e7abe7dbf5de99e07aee06"},{"fixed":"8203fc2286fd48d7d72f52b3c4a2487f96fcea28"}],"database_specific":{"extracted_events":[{"introduced":"0"},{"fixed":"17.3.3"},{"introduced":"17.4.0"},{"fixed":"17.4.1"}],"source":"AFFECTED_FIELD"}}],"versions":["v17.3.1","v17.4.0","v17.3.2","11.2.1","v10.5","v9.0.0-pre","v5.0.4","sprint/2015_04","sprint/2015_03","sprint/2015_02","sprint/2015_01","sprint/2014_18","sprint/2014_16","sprint/2014_13","sprint/2014_12","sprint/2014_11","sprint/2014_10","sprint/2014_09","sprint/2014_08","2.4.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-52781.json"}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N"}]}