Description
OpenProject is open-source, web-based project management software. Prior to 17.3.3 and 17.4.1, the HTML sanitizer grants <macro> 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.
Published: 2026-06-26
Score: 6.4 Medium
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

OpenProject version 17.3.2 and earlier, and 17.4.0 and earlier, contain a stored cross‑site scripting flaw where the HTML sanitizer allows <macro> elements to carry unrestricted data-* attributes. By injecting a data-controller="poll‑for‑changes" attribute into the description of a work package, an attacker can cause Stimulus.js to mount a controller that fetches an attacker‑supplied attachment and passes it to renderStreamMessage(), which executes arbitrary Turbo Stream actions—including redirect_to—inside every authenticated victim’s browser session. The result is a client‑side redirect to an attacker‑controlled server, effectively turning the vulnerability into an information‑disclosure or phishing vector.

Affected Systems

Affected product: OpenProject, a web‑based project management platform from opf. Users running any OpenProject release older than 17.3.3 or 17.4.1 are vulnerable. All earlier patch levels up to 17.3.2 and 17.4.0 should be considered affected.

Risk and Exploitability

The vulnerability scores 6 scale, indicating medium severity. EPSS data is not available, and the issue is not listed in the CISA KEV catalog. An attacker can exploit the flaw by submitting a malicious description through the /api/v3/projects/{project}/work_packages endpoint, which likely requires authenticated credentials but does not require privileged access beyond the ability to modify a work package. Each vulnerable browser session will then execute the injected Turbo Stream actions, leading to automatic redirects. Given the medium score and lack of broad exploitation signals, the risk is moderate; however, the client‑side nature means that all users who view malicious content will be affected.

Generated by OpenCVE AI on June 26, 2026 at 20:21 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade to OpenProject 17.3.3 or later, or 17.4.1 or later to eliminate the vulnerability.
  • If immediate upgrade is not possible, delete or edit any work packages that contain a data-controller attribute in the description to remove the malicious payload until a patch is applied.
  • Monitor API access to /api/v3/projects/{project}/work_packages for unauthorized or unusual POST requests and enforce strict API authentication requirements.

Generated by OpenCVE AI on June 26, 2026 at 20:21 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 26 Jun 2026 23:00:00 +0000

Type Values Removed Values Added
First Time appeared Opf
Opf openproject
Vendors & Products Opf
Opf openproject

Fri, 26 Jun 2026 19:30:00 +0000

Type Values Removed Values Added
Description OpenProject is open-source, web-based project management software. Prior to 17.3.3 and 17.4.1, the HTML sanitizer grants <macro> 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.
Title OpenProject: Stored XSS on openproject.example.com through /api/v3/projects/{project}/work_packages via POST parameter "description"
Weaknesses CWE-79
References
Metrics cvssV3_1

{'score': 6.4, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-06-26T19:00:10.717Z

Reserved: 2026-06-08T17:13:43.065Z

Link: CVE-2026-52781

cve-icon Vulnrichment

No data.

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-06-26T22:45:05Z

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')