CVE-2024-35224

7.6 HIGH

📋 TL;DR

This vulnerability allows stored cross-site scripting (XSS) in OpenProject's Cost Report feature via misconfigured tablesorter dependency. Attackers with 'Edit work packages' and 'Add attachments' permissions can inject malicious JavaScript that bypasses CSP through ticket attachments. Project administrators could potentially escalate privileges by targeting system administrators.

💻 Affected Systems

Products:
  • OpenProject
Versions: Versions before 14.1.0, 14.0.2, and 13.4.2
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Requires both 'Edit work packages' and 'Add attachments' permissions to exploit. Project administrators have these permissions by default.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

A project admin could escalate to system admin privileges, gaining full control over the OpenProject instance and potentially accessing sensitive project data or deploying further attacks.

🟠

Likely Case

Authenticated users with specific permissions could execute arbitrary JavaScript in victims' browsers, potentially stealing session cookies, performing actions as the victim, or accessing sensitive project information.

🟢

If Mitigated

With proper access controls limiting 'Edit work packages' and 'Add attachments' permissions to trusted users only, the attack surface is significantly reduced.

🌐 Internet-Facing: HIGH
🏢 Internal Only: HIGH

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Exploitation requires authenticated access with specific permissions. The vulnerability is well-documented in security advisories.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 14.1.0, 14.0.2, or 13.4.2

Vendor Advisory: https://github.com/opf/openproject/security/advisories/GHSA-h26c-j8wg-frjc

Restart Required: Yes

Instructions:

1. Backup your OpenProject instance and database. 2. Update to version 14.1.0, 14.0.2, or 13.4.2 using your package manager or deployment method. 3. Restart the OpenProject service. 4. Verify the update was successful.

🔧 Temporary Workarounds

Restrict permissions

all

Temporarily remove 'Edit work packages' and 'Add attachments' permissions from non-essential users until patching is complete.

Disable Cost Report feature

all

Temporarily disable the Cost Report feature if not essential for operations.

🧯 If You Can't Patch

  • Implement strict access controls to limit 'Edit work packages' and 'Add attachments' permissions to only essential, trusted users.
  • Deploy a web application firewall (WAF) with XSS protection rules to detect and block exploitation attempts.

🔍 How to Verify

Check if Vulnerable:

Check your OpenProject version. If it's earlier than 14.1.0, 14.0.2, or 13.4.2, you are vulnerable.

Check Version:

For Docker: docker exec openproject bundle exec rails runner 'puts OpenProject::VERSION.to_s'; For package install: openproject run bundle exec rails runner 'puts OpenProject::VERSION.to_s'

Verify Fix Applied:

After updating, verify the version is 14.1.0, 14.0.2, 13.4.2 or later, and test that the Cost Report feature functions without errors.

📡 Detection & Monitoring

Log Indicators:

  • Unusual JavaScript payloads in attachment uploads
  • Multiple failed attempts to access Cost Report features
  • Suspicious activity from users with 'Edit work packages' permissions

Network Indicators:

  • Unusual outbound connections from OpenProject server following Cost Report access
  • Suspicious JavaScript payloads in HTTP requests to Cost Report endpoints

SIEM Query:

source="openproject" AND ("Cost Report" OR "tablesorter" OR "{icon}") AND (javascript OR script OR alert OR document.cookie)

🔗 References

📤 Share & Export