Skip to main content

Penpot EUVDEUVD-2026-92776

| CVE-2026-105684 MEDIUM
Information Exposure (CWE-200)
2026-10-05 GitHub_M
4.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain page-scoped share link
  2. Delivery
    Call get-comment-threads RPC on file
  3. Exploit
    Permission check skips page restriction
  4. Execution
    Receive comments from other pages
  5. Persist
    Harvest commenter PII and page IDs
  6. Impact
    Reuse 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

penpot < 2.18.0

Affected Packages

euvd penpot fix: 2.18.0

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

Vendor (GitHub_M) PRIMARY 4.3 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
vuln.today AI 4.3 MEDIUM

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).

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

Lifecycle Timeline

1
Patch available
Oct 05, 2026 - 21:02 EUVD

DescriptionCVE.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

EPSS Score
0.2%
Top 92% exploitable
Prevalence
Medium
popular open-source design/prototyping platform, common but not ubiquitous
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

22
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +22
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Penpot

View all
CVE-2026-26202 HIGH POC
7.5 Feb 19

Penpot before version 2.13.2 contains a path traversal vulnerability in the font creation endpoint that allows authentic

CVE-2026-105691 CRITICAL
9.9 Oct 05

Authenticated command injection in the Penpot SVG exporter prior to 2.18.0 allows a user with edit rights on a design fi

CVE-2026-44986 CRITICAL
9.9 Jul 15

Account takeover in Penpot before 2.14.5 allows an authenticated registered user to hijack any non-blocked profile witho

CVE-2026-45806 HIGH
7.7 Jul 15

Server-side request forgery in Penpot before 2.15.0 lets an authenticated file editor coerce the backend into fetching a

CVE-2026-17613 HIGH
7.5 Aug 05

Missing authorization on Penpot's ::import-binfile RPC command allows any authenticated user to overwrite arbitrary file

CVE-2026-105688 MEDIUM
6.7 Oct 05

Privilege escalation in Penpot before 2.18.0 lets a non-owner team administrator promote themselves to team owner by cre

CVE-2026-105696 MEDIUM
6.5 Oct 05

Missing authorization checks in Penpot prior to 2.18.0 let a holder of a valid share link read design and shape data fro

CVE-2026-105689 MEDIUM
6.0 Oct 05

Server-side request forgery in Penpot before 2.18.0 allows an authenticated user who controls a media-import URL, or an

CVE-2026-105695 MEDIUM
5.9 Oct 05

Penpot versions prior to 2.18.0 leak the contents of other users' in-progress uploads because the backend assemble-chunk

CVE-2026-105690 MEDIUM
5.9 Oct 05

Logout in Penpot versions prior to 2.18.0 clears the browser's auth-token cookie but leaves the matching server-side ses

CVE-2026-105692 MEDIUM
5.4 Oct 05

Authenticated editors on a Penpot file (prior to version 2.18.0) can delete share links that were created by other users

CVE-2026-105694 MEDIUM
5.4 Oct 05

Stored cross-site scripting in Penpot before 2.18.0 allows an authenticated user holding file-edit permission to upload

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy