Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain page-scoped share link
-
DeliveryCall get-comment-threads RPC on file
-
ExploitPermission check skips page restriction
-
ExecutionReceive comments from other pages
-
PersistHarvest commenter PII and page IDs
-
ImpactReuse page IDs to read unshared content
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery 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 possess a valid Penpot share link that is page-scoped (created with a specific :pages restriction) to a file that also contains comment threads on other, non-shared pages within that same file; the vulnerable get-comment-threads, get-comment-thread, and get-comments RPC commands then ignore the link's page restriction. Limiting factors: the attacker must already hold such a share link (so this is not fully anonymous access to arbitrary files), disclosure is bounded to pages within the same file as the link, and the issue is fully remediated in Penpot 2.18.0 - instances on 2.18.0 or later are not affected. The related commenting-permission hardening also closes a path where share-link holders with who-comment=team could bypass the comment restriction. |
| Impact | This is a moderate, confidentiality-only information-disclosure flaw (CWE-200) and the signals are internally consistent rather than conflicting. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N, base 4.3) correctly reflects a network-reachable RPC bug that requires a low privilege - specifically possession of a valid page-scoped share link - with no user interaction and only limited confidentiality impact. No EPSS score was provided in the input, the CVE is NOT on the CISA KEV list, and no public exploit code was supplied, so there is no evidence of active or widespread exploitation; this reads as a real but low-priority hardening issue, not an emergency. The one factor that elevates it slightly above a trivial leak is the chained impact the vendor documents: disclosed page identifiers can be fed into other page-reading functionality to reach unshared design content, so the practical confidentiality exposure is broader than 'a few comment bodies.' Because no EPSS/KEV/POC telemetry accompanies the record, prioritization should rest on exposure (is Penpot internet-facing with share links in use) rather than on an exploitation-probability signal, which is absent here. |
| Exploit ScenarioDerived | An attacker who has been given (or has obtained) a share link scoped to a single page of a Penpot file calls the get-comment-threads or get-comments RPC command against the same file. Because the permission check validated file access but never enforced the share link's page restriction, the server returns comment threads, full comment bodies, commenter names, email addresses, photos, and page IDs from pages the link was never meant to expose. The attacker then reuses the leaked page identifiers against affected page-reading functionality to pull unshared design content. No public exploit code is provided, but the fixing commit and advisory make the logic flaw straightforward to reproduce. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 05, 2026
Information disclosure in Penpot prior to 2.18.0 lets a holder of a page-scoped share link pull comment threads and full comment bodies from pages they were never granted access to within the same file, exposing commenter names, email addresses, profile photos, and internal page identifiers; those leaked page IDs can then be chained with other page-reading functionality to reach unshared design content. The flaw sits in the get-comment-threads, get-comment-thread, and get-comments RPC commands, which called the comment permission check but never enforced the share link's :pages restriction; exploitation requires an authenticated party (CVSS PR:L) who already possesses a valid page-scoped share link, so it is not anonymous access to arbitrary files. Risk is moderate and confidentiality-only (CWE-200, CVSS 4.3), there is no public exploit identified at time of analysis and no CISA KEV listing, and the issue is fully remediated in Penpot 2.18.0, so instances on 2.18.0 or later are not affected.
RemediationAI
Upgrade to Penpot 2.18.0 or later - this is the vendor-released patch and the version in which the flaw is fully fixed. The upstream change is visible in commit 6d9f411fab28a8f60cf807728f4fac2ecb646ca6 and the release notes at https://github.com/penpot/penpot/releases/tag/2.18.0, with details in advisory GHSA-fwm4-hm9f-rmcp. If immediate upgrade is not possible, reduce exposure by avoiding page-scoped share links on files that contain sensitive comment threads - create share links over the full file, or do not create them at all for design files that mix shared and non-shared pages - and by auditing existing share links for :pages restrictions so they can be revoked or regenerated. Note that restricting share links to the whole file removes the vulnerability's trigger but also widens what link holders can see, so the practical trade-off favors patching. Disabling or limiting the commenting feature for untrusted share links (for example by requiring who-comment settings that do not grant broad share-link access) reduces the attack surface but does not remove the underlying page-scope bypass until 2.18.0 is applied. Because the leaked page identifiers can be chained with other page-reading functionality, any instance that was exposed before patching should be treated as having had potentially sensitive commenter metadata (names, email addresses, photos) and page identifiers disclosed, and affected users should be notified accordingly.
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 rather than a conventional REST API. The vulnerable handlers live in backend/src/app/rpc/commands/comments.clj, where get-comment-threads, get-comment-thread, and get-comments invoked files/check-comment-permissions! to authorize the caller but discarded the returned permission set, so the share link's :pages scope was never consulted when the comment data was queried. This is a classic authorization-scope confusion falling under CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor): the check confirmed the caller had some legitimate level of comment/read access, but did not confirm the requested object fell inside the share link's granted page subset. The upstream fix changes check-comment-permissions! in files.clj to return the computed permission map and to require explicit comment permission (who-comment=all) for :share-link principals rather than accepting read permission as a substitute; comments.clj then filters returned threads with filterv against the link's :pages set and raises a :not-found / :object-not-found error for out-of-scope reads, converting the leak into a standard 404-style response that avoids confirming object existence. The change to files.clj additionally closes a related bypass in which share-link holders configured with who-comment=team could still comment. The disclosed page identifiers are themselves sensitive because they are valid handles for other page-reading functionality, giving the issue a multiplicative impact beyond simple comment exposure. The CPE cpe:2.3:a:penpot:penpot:*:*:*:*:*:*:*:* reflects that every Penpot build prior to 2.18.0 carries this behavior in both self-hosted and hosted deployments.
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:L/UI:N/S:U/C:L/I:N/A:N
Network RPC (AV:N), no special conditions (AC:L); PR:L because a valid page-scoped share link is required; confidentiality-only leak of comments and page IDs (C:L, I:N, A:N).
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, the get-comment-threads, get-comment-thread, and get-comments RPC commands use check-comment-permissions! but do not apply the share link's pages restriction. A holder of a page-scoped share link can retrieve comment threads and full comment bodies from other pages in the same file, including commenter names, email addresses, photos, and page identifiers. The disclosed page identifiers can also be used with affected page-reading functionality to access unshared design content. 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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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
Privilege escalation in Penpot before 2.18.0 lets a non-owner team administrator promote themselves to team owner by cre
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
EUVD-2026-92776
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB