CVE-2023-33960
📋 TL;DR
OpenProject's robots.txt file publicly exposes project identifiers even when the entire instance is configured to require login. This information disclosure vulnerability affects all OpenProject installations with public projects, allowing attackers to enumerate project structure without authentication.
💻 Affected Systems
- OpenProject
📦 What is this software?
Openproject by Openproject
⚠️ Risk & Real-World Impact
Worst Case
Attackers could map all public projects in an organization, potentially identifying sensitive project names or structures that could be used for targeted attacks or social engineering.
Likely Case
Information leakage revealing project names, identifiers, and organizational structure that should remain private in login-required instances.
If Mitigated
No information disclosure - robots.txt properly respects login-required configuration and doesn't expose project data.
🎯 Exploit Status
Exploitation requires only HTTP GET request to /robots.txt. No special tools or authentication needed.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 12.5.6
Vendor Advisory: https://github.com/opf/openproject/security/advisories/GHSA-xjfc-fqm3-95q8
Restart Required: Yes
Instructions:
1. Upgrade OpenProject to version 12.5.6 or later. 2. Alternatively, apply the patch from GitHub PR #12708 to versions 10.0+. 3. Restart the OpenProject service.
🔧 Temporary Workarounds
Mark all projects as non-public
allChange all public projects to non-public and grant access only to authorized users via project membership
OpenProject web interface: Project Settings > Visibility > Set to 'Non-public'
🧯 If You Can't Patch
- Implement web application firewall rules to block access to /robots.txt for unauthenticated users
- Configure reverse proxy to intercept and modify/block robots.txt responses
🔍 How to Verify
Check if Vulnerable:
Access http://your-openproject-instance/robots.txt without authentication. If it returns project identifiers and your instance requires login, you are vulnerable.
Check Version:
Check OpenProject version in web interface or via command: openproject run bundle exec rails runner 'puts OpenProject::VERSION.to_s'
Verify Fix Applied:
After patching, robots.txt should return empty or generic content when accessed without authentication in login-required instances.
📡 Detection & Monitoring
Log Indicators:
- Multiple GET requests to /robots.txt from unauthenticated IPs
- Unusual crawler/bot activity patterns
Network Indicators:
- Unusual traffic to /robots.txt endpoint
- External IPs accessing robots.txt without subsequent authentication
SIEM Query:
source="openproject" AND path="/robots.txt" AND status=200 AND NOT user_agent="*bot*"
🔗 References
- https://community.openproject.org/wp/48324
- https://github.com/opf/openproject/pull/12708
- https://github.com/opf/openproject/releases/tag/v12.5.6
- https://github.com/opf/openproject/security/advisories/GHSA-xjfc-fqm3-95q8
- https://patch-diff.githubusercontent.com/raw/opf/openproject/pull/12708.patch
- https://community.openproject.org/wp/48324
- https://github.com/opf/openproject/pull/12708
- https://github.com/opf/openproject/releases/tag/v12.5.6
- https://github.com/opf/openproject/security/advisories/GHSA-xjfc-fqm3-95q8
- https://patch-diff.githubusercontent.com/raw/opf/openproject/pull/12708.patch