Skip to main content

Penpot CVE-2026-105695

| EUVDEUVD-2026-92714 MEDIUM
Missing Authorization (CWE-862)
2026-10-05 GitHub_M
5.9
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Authenticate to Penpot instance
  2. Delivery
    Obtain victim's live upload-session UUID
  3. Exploit
    Call assemble-chunks with victim's session ID
  4. Execution
    Assemble victim's chunks into attacker's file/font/import
  5. Impact
    Disclose uploaded bytes and delete victim session

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
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

Requires an authenticated account on the target Penpot instance (PR:L) and, critically, possession of another user's live, completed-but-not-yet-assembled upload-session UUID - exploitation is only possible against the chunked-upload flow (file import, team-font upload, or project import) during the brief window after chunks are uploaded but before assembly. The randomness of the session UUID and the narrow live window are the primary limiting factors (reflected in AC:H); there is no user-interaction requirement from the victim. Only Penpot versions prior to 2.18.0 are affected; the fix scopes the session lookup to the requesting profile.

Impact

This is a genuine but moderate-priority authorization flaw (BOLA/IDOR, CWE-862). The CVSS 3.1 vector (AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:L, base 5.9) is internally consistent with the description: an authenticated low-privilege user (PR:L) can act over the network (AV:N), but success is gated by high attack complexity (AC:H) because the attacker must obtain a victim's live, completed, not-yet-assembled upload-session UUID - a narrow, racy window. Confidentiality impact is high (C:H, disclosure of the victim's uploaded bytes), integrity is none (I:N), and availability is low (A:L, the victim's pending session is deleted). No EPSS score, KEV listing, or public POC was provided, so there is no public exploit identified at time of analysis and no evidence of active exploitation. The vulnerability, fix commit, PR, and regression test are all confirmed in Penpot's source, so the technical root cause is certain; however, the practical exploitability is constrained by the need to guess/obtain an unguessable UUID during a live upload, which keeps real-world risk lower than the C:H component alone might suggest. Overall: a real, confirmed issue worth patching, not a drop-everything emergency.

Exploit ScenarioDerived

An authenticated Penpot user who is a member of the same instance observes or obtains another user's live upload-session UUID (e.g. from a completed-but-unassembled chunked upload) and calls assemble-chunks - via file import, team-font upload, or project import - passing the victim's session ID. Because assemble-chunks scoped the lookup only by session ID, the attacker receives the victim's uploaded bytes into their own object and simultaneously deletes the victim's pending session. No public exploit code is identified, and the high attack complexity reflects the difficulty of capturing a valid live session UUID.

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

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

Alert me

AnalysisAIv1 – Oct 05, 2026

Penpot versions prior to 2.18.0 leak the contents of other users' in-progress uploads because the backend assemble-chunks routine fetches an upload session by ID alone instead of scoping the lookup to the calling account. An authenticated attacker (PR:L) who comes to know a victim's live, completed-but-not-yet-assembled upload-session UUID can assemble the victim's stored chunks into the attacker's own file, team font, or project import - reading the uploaded bytes (C:H) and wiping the victim's pending session (A:L). Successful abuse is gated by the UUID's randomness and the brief window before the session is consumed, which the assessed vector captures as AC:H; no public exploit code or CISA KEV entry is associated with this issue at time of analysis.

RemediationAI

Upgrade Penpot to 2.18.0, which carries the vendor-released patch (commit 367e4d534c536c33d4f3fbad375f3e9c29b787a6, PR 11012) that scopes the upload-session lookup to the authenticated profile; consult GHSA-5vrm-3c6w-gjfv and the 2.18.0 release notes for deployment guidance. Because the flaw requires an attacker to already know a victim's live session UUID, no clean server-side toggle disables the vulnerable code path, but temporary compensating controls reduce exposure: shorten upload-session TTLs so the exploitable window between chunk upload and assembly is minimized (trade-off is more failed/expired large uploads), restrict account creation and file/font/project import privileges to trusted users during the exposure window (trade-off is reduced functionality for legitimate users), and monitor server logs for assemble-chunks or create-font-variant calls returning :not-found/:object-not-found from unexpected profiles, which signals attempted UUID guessing or leakage. Storing or transmitting upload-session UUIDs only over trusted channels and avoiding their exposure in logs, URLs, or client-side telemetry further limits the reconnaissance an attacker needs, and organizations unable to patch immediately should treat session UUIDs as sensitive authorization tokens. No vendor-released patch is identified for pre-2.18.0 lines beyond the 2.18.0 upgrade itself.

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's Clojure backend exposes a chunked-upload feature in which clients push bytes via upload-chunk and later have the server concatenate the stored pieces through an assemble-chunks helper (backend/src/app/rpc/commands/media.clj). While upload-chunk correctly tied the session to the authenticated profile, assemble-chunks - reached from the binary-file import path (binfile.clj), the team-font upload path (fonts.clj), and the media path (media.clj) - performed a raw db/get on the :upload-session entity using only the supplied session ID, so no ownership predicate was applied. This is the classic Broken Object Level Authorization / missing-authorization pattern (CWE-862, test comments also reference CWE-639), where a resource identifier alone is treated as sufficient authority. The upstream fix threads profile-id through assemble-chunks and adds it to the datastore query ({:id session-id :profile-id profile-id}), raising :not-found/:object-not-found when the session does not belong to the requester, and adds a regression test confirming a second profile cannot assemble the first profile's session.

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 5.9 MEDIUM
AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:L
vuln.today AI 5.9 MEDIUM

Authenticated network attacker (PR:L/AV:N) must obtain a victim's live, unguessable session UUID (AC:H); discloses uploaded bytes (C:H) and deletes the pending session (A:L), with no integrity impact.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

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, assemble-chunks retrieves an upload session using only its session ID, while upload-chunk correctly scopes the lookup to the authenticated profile. An authenticated user who obtains another user's live, completed upload-session UUID can assemble the victim's chunks into the attacker's own file, team font, or project import, disclosing the uploaded bytes and deleting the victim's pending session. This issue is fixed in version 2.18.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 79% exploitable
Prevalence
Low
self-hosted open-source design tool, limited enterprise production footprint
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.3%
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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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

CVE-2026-105686 MEDIUM
5.3 Oct 05

Authenticated users of Penpot prior to 2.18.0 can exhaust server-side temporary storage by repeatedly re-uploading a val

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