CVE-2026-24685

8.8 HIGH

📋 TL;DR

OpenProject versions before 16.6.6 and 17.0.2 have a command injection vulnerability that allows authenticated users with repository browsing permissions to write arbitrary files. Attackers can inject git command-line options through the revision parameter, causing the system to write git output to any location the OpenProject process can access. This can lead to data loss, denial of service, or potential remote code execution.

💻 Affected Systems

Products:
  • OpenProject
Versions: All versions before 16.6.6 and 17.0.2
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Requires user with :browse_repository permission on a project. OpenProject must be configured with Git repository integration.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise through overwriting critical configuration files, installation of backdoors, or remote code execution by writing malicious scripts to executable locations.

🟠

Likely Case

Denial of service through overwriting application files, data corruption, or limited remote code execution by writing to web-accessible directories.

🟢

If Mitigated

Limited impact if proper file permissions restrict OpenProject process write access to sensitive directories and regular backups are maintained.

🌐 Internet-Facing: HIGH
🏢 Internal Only: HIGH

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploit requires authenticated access but is trivial to execute with proper permissions. Public advisory includes technical details.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 16.6.6 or 17.0.2

Vendor Advisory: https://github.com/opf/openproject/security/advisories/GHSA-74p5-9pr3-r6pw

Restart Required: Yes

Instructions:

1. Backup your OpenProject installation and database. 2. Update to OpenProject 16.6.6 (for 16.x branch) or 17.0.2 (for 17.x branch). 3. Restart the OpenProject service. 4. Verify the update was successful.

🔧 Temporary Workarounds

Disable repository browsing

all

Temporarily remove :browse_repository permissions from all users to prevent exploitation

UPDATE roles SET permissions = array_remove(permissions, ':browse_repository') WHERE ':browse_repository' = ANY(permissions);

Restrict Git repository access

all

Disable Git repository integration in OpenProject settings

🧯 If You Can't Patch

  • Implement strict file system permissions to limit OpenProject process write access to only necessary directories
  • Deploy web application firewall (WAF) rules to block requests containing suspicious git command-line options in parameters

🔍 How to Verify

Check if Vulnerable:

Check OpenProject version via admin interface or run: openproject run bundle exec rails runner 'puts OpenProject::VERSION.to_s'

Check Version:

openproject run bundle exec rails runner 'puts OpenProject::VERSION.to_s'

Verify Fix Applied:

Confirm version is 16.6.6 or higher (for 16.x) or 17.0.2 or higher (for 17.x)

📡 Detection & Monitoring

Log Indicators:

  • Unusual file write operations in application logs
  • Requests to /projects/*/repository/diff.diff with rev parameter containing --output= or other git options
  • Error logs showing file permission denied for unexpected paths

Network Indicators:

  • HTTP POST/GET requests with rev parameter containing command-line injection patterns

SIEM Query:

source="openproject.log" AND ("rev=--output=" OR "git show" AND error)

🔗 References

📤 Share & Export