Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege project member
-
DeliveryInject malicious CSS into work package description or comment
-
ExploitVictim authenticated user views the work package
-
ExecutionBrowser renders attacker-controlled CSS in victim's DOM
-
PersistUI redressing or phishing overlay displayed to victim
-
ImpactVictim credentials or actions captured
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires an authenticated OpenProject account with write access to at least one formattable text field - specifically work package descriptions, work package comments, project descriptions, or news items. The attacker must be able to save rich text content to a resource that a target user will subsequently view (UI:R). No administrative or elevated role is required beyond standard contributor/member write permissions. Exploitation is limited by: (1) mandatory authentication - unauthenticated attackers cannot exploit this; (2) the victim must navigate to and render the page containing the malicious content; (3) the CSS injection is scoped to the rendered page context (S:U, no scope change to other origins). Instances where all project members are fully trusted employees represent minimal risk; externally accessible instances or those with untrusted contractor accounts face higher realistic risk. |
| Impact | The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:H/A:N) scores 5.7 (Medium), reflecting a network-exploitable flaw requiring low privileges and victim interaction. PR:L confirms that write access to formattable fields is a hard prerequisite, limiting exposure relative to unauthenticated XSS. UI:R means a victim must actively view the injected content, further constraining impact. The I:H rating aligns with real-world CSS injection capabilities: full-page UI manipulation, phishing overlays, and clickjacking are achievable. C:N may slightly understate risk since CSS attribute-selector timing attacks and background-image exfiltration can leak limited data, though this is not explicitly confirmed in the advisory. No EPSS data was provided; without KEV listing or known POC, exploitation at scale is unlikely but opportunistic insider abuse (authenticated project members) is a realistic threat vector. This is a genuine medium-priority issue for multi-tenant or externally accessible OpenProject instances rather than a theoretical risk. |
| Exploit ScenarioDerived | An authenticated OpenProject user with write access to a shared project crafts a work package description containing an img or table element with a style attribute using position:fixed, top:0, left:0, width:100vw, height:100vh to overlay a fake login prompt over the entire viewport. When a colleague or project manager opens the work package, the CSS renders in their browser, presenting a phishing interface that mimics the OpenProject login page to harvest credentials. No public exploit code has been identified at time of analysis, but the technique requires only basic CSS knowledge. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 26, 2026
CSS injection in OpenProject's rich text rendering pipeline prior to version 17.4.0 allows any authenticated user with write access to inject arbitrary CSS into formattable text fields (work package descriptions, comments, project descriptions, news). The misconfigured Sanitize::Config::RELAXED[:css] setting permits all CSS properties on permitted HTML elements, enabling UI redressing, phishing overlays, and potential CSS-based side-channel data exfiltration when a victim views the malicious content. No public exploit or active exploitation (CISA KEV) has been identified at time of analysis; the vendor-released fix is available in 17.4.0.
RemediationAI
Upgrade to OpenProject 17.4.0 or later, which replaces the overly permissive Sanitize::Config::RELAXED[:css] configuration with a restrictive CSS allowlist. The vendor advisory is at https://github.com/opf/openproject/security/advisories/GHSA-j9q2-49mp-hmq5. If immediate upgrade is not feasible, a compensating control is to restrict write access to formattable text fields (work package descriptions, comments, project descriptions, news) to trusted internal users only, removing write permissions from untrusted or externally-facing project members. This reduces the attacker pool but does not eliminate the vulnerability for privileged users. Content-Security-Policy headers that block inline styles (style-src 'none' or a strict nonce-based policy) could further limit CSS injection impact, though retrofitting CSP onto an existing application may break legitimate styling and requires testing.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
OpenProject is a Ruby-based web application for project management. Its rich text (Markdown) rendering pipeline uses the sanitize Ruby gem for HTML/CSS sanitization. The vulnerability stems from applying Sanitize::Config::RELAXED[:css] - an overly permissive preset that whitelists essentially all CSS properties - to inline style attributes on permitted HTML elements including figure, img, table, th, tr, and td. CWE-79 (Improper Neutralization of Input During Web Page Generation / XSS) is the root cause class: user-controlled CSS content is not adequately restricted before being rendered into the browser DOM. This enables style-based attacks such as position:fixed overlays, background-image out-of-band requests (a known CSS data exfiltration technique), and full-page UI manipulation. The affected CPE is cpe:2.3:a:opf:openproject:*:*:*:*:*:*:*:*, indicating all OpenProject versions prior to the fix.
Know when Openproject gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:H/A:N
Network-accessible web app, low-privilege write access required (PR:L), victim must view content (UI:R), integrity-only UI manipulation impact with no confirmed confidentiality or availability effect.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
OpenProject is open-source, web-based project management software. Prior to 17.4.0, OpenProject's rich text (markdown) rendering pipeline uses Sanitize::Config::RELAXED[:css] for inline style sanitization. This configuration permits essentially all CSS properties in style attributes on permitted HTML elements (figure, img, table, th, tr, td). This allows any authenticated user with write access to formattable text fields (work package descriptions, comments, project descriptions, news) to inject CSS This vulnerability is fixed in 17.4.0.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
More in Openproject
View allA SQL injection vulnerability in the activities API in OpenProject before 8.3.2 allows a remote attacker to execute arbi
OpenProject is web-based project management software. Rated high severity (CVSS 7.5), this vulnerability is remotely exp
OpenProject is open source project management software. Rated medium severity (CVSS 6.5), this vulnerability is remotely
Authenticated remote code execution affects the official openproject/openproject Docker image, which ships with a hardco
Cross-project folder hijacking in OpenProject before 17.3.3 and 17.4.1 lets a project-admin abuse an insecure direct obj
SQL injection in OpenProject's baseline-comparison (timestamps) functionality lets an authenticated, low-privileged user
OpenProject has a CVSS 9.9 command injection vulnerability allowing authenticated users to execute OS commands on the pr
Remote code execution in OpenProject before 17.3.3 and 17.4.1 arises from cache store poisoning, allowing an attacker wi
OpenProject, a web-based project management platform, contains a critical SQL injection vulnerability in versions prior
OpenProject (before 16.6.4) has a local file read vulnerability through SVG-based ImageMagick exploitation in the PDF ex
OpenProject's Repositories module contains a stored cross-site scripting (XSS) vulnerability that occurs when displaying
Token decryption in OpenProject 17.0 allows authenticated attackers to intercept and decrypt 24-hour authentication toke
EUVD-2026-39878
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB