Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as team administrator
-
DeliveryCraft invitation assigning owner role
-
ExploitBypass missing role-ceiling check
-
ExecutionAccept invite on second account as owner
-
ImpactExercise owner-only team control
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V8 - Authorization Least privilege enforcement
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the attacker to already be an authenticated team member holding the 'administrator' role (not owner) on the target team, and to use the create-team-invitations RPC (either the emails+role or the invitations[] format) or the update-team-invitation-role path to assign role :owner. The limiting factor is this pre-existing administrator privilege within the specific team (PR:H) - it cannot be performed by anonymous or ordinary (editor/viewer) users, and it only affects versions prior to 2.18.0; no user interaction by a victim is needed beyond the attacker accepting their own crafted invitation. Owners are legitimately allowed to create owner invitations, so the condition is specifically a non-owner administrator acting on invitation roles. |
| Impact | This is a genuine but moderate-priority privilege-escalation flaw (CWE-269), best treated as a within-tenant integrity issue rather than an internet-facing emergency. The CVSS 3.1 vector CVSS:3.1/AV:N/AC:L/PR:H/UI:N (6.7) is internally consistent with the description and the patch: PR:H correctly reflects that the attacker must already be an authenticated team administrator, AC:L reflects that no race or special timing is needed, and I:H/A:H capture the resulting owner-level takeover of the team. No EPSS score, SSVC decision, KEV listing, or POC was provided in the input; per precision rules this is 'no public exploit identified at time of analysis' and there is no evidence of active exploitation. The commit diff and dedicated regression tests (T7-F-01) confirm the root cause - invitation roles were persisted and applied without the role-ceiling check that update-team-member-role already enforced - so the vulnerability itself is well substantiated even though exploitation-probability signals are absent. Net: real and worth patching because the privilege boundary (admin→owner) is meaningfully violated, but the PR:H precondition means the attacker is already a semi-trusted insider, so this is not a mass-exploitable remote-takeover bug. Missing data to note: no EPSS and no SSVC inputs were supplied, so widespread-exploitation likelihood cannot be quantified from the provided intelligence. |
| Exploit ScenarioDerived | A malicious or compromised account that already holds the team 'administrator' role (but not 'owner') sends a team invitation specifying the owner role, or updates a pending invitation's role to owner, which pre-2.18.0 is persisted and applied without any role-ceiling check. The attacker accepts the invitation on a second account to mint a new owner, then uses that owner account to seize owner-only control of the team. No public exploit code was identified, but the authoritative fix commit and regression tests make the exact exploitation path explicit. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 05, 2026
Privilege escalation in Penpot before 2.18.0 lets a non-owner team administrator promote themselves to team owner by creating or modifying team invitations with the :owner role, since the invitation code path lacked the role-ceiling check that guards update-team-member-role. Exploitation requires the attacker to already hold the team-level 'administrator' role (authenticated, PR:H), and the resulting access is confined to that team's owner-only controls; no public exploit code or confirmed active exploitation was identified at time of analysis, and no EPSS score was supplied. It is a moderate-priority, within-tenant integrity issue rather than an internet-facing emergency.
RemediationAI
Vendor-released patch: upgrade to Penpot 2.18.0 or later, which introduces the :cant-promote-to-owner validation in the invitation creation, invitation-role update, and acceptance paths via commit 5efd9cc3c5689485322f57b644b83a3bd2e33cee; see the release notes at https://github.com/penpot/penpot/releases/tag/2.18.0 and the advisory at https://github.com/penpot/penpot/security/advisories/GHSA-mx4v-cmxq-644v. If an immediate upgrade is not possible, reduce exposure by auditing every team's membership and revoking the 'administrator' role from any user who does not strictly need it - the flaw is only reachable by an authenticated team admin, so shrinking that population removes the precondition (trade-off: delegated team administration must be handled manually by owners). Also review current team ownership lists and pending invitations for unexpected duplicate owners or :owner-role invitations created by non-owners, and remove any suspicious owner accounts, since the exploit requires the attacker to have already accepted a crafted invitation (trade-off: this is detection and cleanup, not prevention, so it must be repeated until the patch is applied). Restricting network access to the Penpot backend/RPC endpoint can further reduce the attack surface for internet-exposed deployments (trade-off: legitimate remote users lose access).
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
Penpot is an open-source design and prototyping platform whose backend is written in Clojure and exposes functionality through RPC commands, including teams_invitations.clj. In versions prior to 2.18.0, invitation roles were persisted and applied without validating them against the acting user's own privilege ceiling, so the role value supplied for a new or updated invitation (in either the legacy emails+role format or the invitations[] map format) was accepted verbatim. The update-team-member-role command already enforced a role ceiling, but the create-team-invitations and invitation-acceptance paths did not, allowing a team administrator to mint :owner invitations, accept one with a second account, and then leverage the resulting owner account for owner-only team control. The root cause maps to CWE-269 (Improper Privilege Management) - a missing authorization/role-ceiling check rather than a memory-safety or injection defect. The fix in commit 5efd9cc3c5689485322f57b644b83a3bd2e33cee inserts an explicit check that raises :validation/:cant-promote-to-owner whenever a non-owner attempts to set the :owner role (either directly or via any element of the invitations collection), while still permitting genuine owners to create owner invitations. The CPE cpe:2.3:a:penpot:penpot:*:*:*:*:*:*:*:* reflects that all pre-2.18.0 releases are in scope.
Know when Penpot 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:H/UI:N/S:U/C:L/I:H/A:H
Requires an authenticated team administrator (PR:H) over the network with no user interaction; escalation to owner yields full team control (I:H/A:H) with limited direct data disclosure (C:L).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Penpot is an open-source design and prototyping platform. Prior to 2.18.0, create-team-invitations and the invitation acceptance path allow a non-owner team administrator to assign the owner role because invitation roles are persisted and applied without the role-ceiling check used by update-team-member-role. An administrator can invite another account as an owner, create multiple owners, and then use the new owner account to obtain owner-only control over the team. This issue is fixed in version 2.18.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
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
Penpot before version 2.13.2 contains a path traversal vulnerability in the font creation endpoint that allows authentic
Authenticated command injection in the Penpot SVG exporter prior to 2.18.0 allows a user with edit rights on a design fi
Account takeover in Penpot before 2.14.5 allows an authenticated registered user to hijack any non-blocked profile witho
Server-side request forgery in Penpot before 2.15.0 lets an authenticated file editor coerce the backend into fetching a
Missing authorization on Penpot's ::import-binfile RPC command allows any authenticated user to overwrite arbitrary file
Missing authorization checks in Penpot prior to 2.18.0 let a holder of a valid share link read design and shape data fro
Server-side request forgery in Penpot before 2.18.0 allows an authenticated user who controls a media-import URL, or an
Penpot versions prior to 2.18.0 leak the contents of other users' in-progress uploads because the backend assemble-chunk
Logout in Penpot versions prior to 2.18.0 clears the browser's auth-token cookie but leaves the matching server-side ses
Authenticated editors on a Penpot file (prior to version 2.18.0) can delete share links that were created by other users
Stored cross-site scripting in Penpot before 2.18.0 allows an authenticated user holding file-edit permission to upload
Authenticated users of Penpot prior to 2.18.0 can exhaust server-side temporary storage by repeatedly re-uploading a val
EUVD-2026-92706
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB