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.
An attacker uploads a specially crafted SVG file disguised as a PNG as an attachment to a work package. When a user exports the work package to PDF, the backend attempts to resize the image using the ImageMagick engine. During this process, the 'text:' encoder in ImageMagick is triggered, enabling the reading of any local files' contents that the application has access to (e.g., /etc/passwd, project configuration files, private project data).
An attacker can read any local files accessible to the application user, including configuration files, credentials, and private project data stored on the server.
OpenProject should be updated to version 16.6.4. Those unable to perform the update should apply the patch manually according to the vendor's information in the references (GitHub Security Advisory GHSA-m8f2-cwpq-vvhh).
OpenProject in versions earlier than 16.6.4
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:LOpenproject
APPOpenproject< 16.6.4
Related vulnerabilities
SQL Injection w OpenProject — operator =n bez parametryzacji zapytań
Stored XSS w module Repositories aplikacji OpenProject
SQL Injection w OpenProject umożliwiający zdalne wykonanie kodu Ruby
OpenProject: command injection w endpointcie repozytorium prowadzący do RCE
OpenProject: command injection w endpoincie diff repozytorium (zapis dowolnych plików)