Skip to main content

Penpot EUVDEUVD-2026-92709

| CVE-2026-105691 CRITICAL
OS Command Injection (CWE-78)
2026-10-05 GitHub_M
9.9
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Obtain file edit access or public share link
  2. Delivery
    Store shell metacharacters in text fill-color
  3. Exploit
    Trigger SVG export
  4. Execution
    Value injected into ppmcolormask exec call
  5. Persist
    Arbitrary commands run as exporter service
  6. Impact
    Exporter host compromise

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK

2 techniques across 1 tactic: 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 that an attacker be able to set a text object's fill-color value in a Penpot file (edit access to the file) and then trigger an SVG export; the malicious fill color is passed unsanitized into the ppmcolormask command string executed via child_process.exec. Two reachability paths exist: (1) an authenticated user with file edit rights (matching CVSS PR:L), and (2) triggering the export of a malicious file through a VALID PUBLIC SHARE LINK, which broadens reach to anyone holding the link. LIMITING FACTORS: the affected component is the separate SVG exporter service, so only deployments that expose SVG export (and, for the share-link path, that enable public share links to attacker-authored files) are exploitable; execution privileges are bounded by the exporter service account. Only Penpot versions prior to 2.18.0 are affected.

Impact

This is a genuine high-priority vulnerability, not an inflated CVSS score. The CWE-78 OS command injection arises from an attacker-controlled SVG fill-color value being concatenated into a ppmcolormask command string and passed to child_process.exec, yielding direct code execution with the exporter service's privileges. The input CVSS vector (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H = 9.9) is consistent with the description: the payload is planted over the network by a user with edit rights (PR:L), requires no user interaction, and the scope change (S:C) reflects code execution crossing into the separate exporter service. No EPSS score, KEV listing, or public POC was provided in the input; per the precision rules this is 'no public exploit identified at time of analysis.' The dangerous amplifier is the public-share-link vector: an export of a malicious file can be triggered via a valid public share link, meaning the trigger step may not require authentication even though planting the payload (PR:L) does. CONFLICT TO VERIFY: CVSS encodes PR:L, but the share-link trigger path implies a near-unauthenticated reachability in shared/public deployments - defenders running public share links should treat effective exposure as higher than PR:L alone suggests. Absent EPSS/KEV data, widespread exploitation cannot be asserted, but the low complexity and fixed patch make prompt upgrading to 2.18.0 warranted.

Exploit ScenarioDerived

An attacker with edit access to a Penpot file (or who creates a malicious file exposed via a public share link) sets a text object's fill color to a value containing shell metacharacters. When the SVG export runs, that value is interpolated into a ppmcolormask command executed through child_process.exec, running attacker commands on the exporter service. No public exploit code is identified at time of analysis, but the fix commit/PR (penpot #11272) publicly reveals the vulnerable code path.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 05, 2026

Authenticated command injection in the Penpot SVG exporter prior to 2.18.0 allows a user with edit rights on a design file to place shell metacharacters in a text object's fill-color value, which the exporter interpolates unsanitized into a ppmcolormask command string and runs via child_process.exec, resulting in arbitrary command execution with the exporter service's privileges. The CVSS 3.1 score of 9.9 (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H) reflects a scope change that crosses from the Penpot application into the underlying exporter host, with high confidentiality, integrity, and availability impact there. A second reachability path exists through a valid public share link to a malicious file, which lets anyone holding the link trigger the export without being an authenticated editor; no public exploit code has been identified at time of analysis, and the issue is fixed in 2.18.0.

RemediationAI

Upgrade to Penpot 2.18.0 or later (Vendor-released patch: 2.18.0), available from https://github.com/penpot/penpot/releases/tag/2.18.0, and verify the applied change against commit aa3bc1ae984577f0354d4270d2546e15985f4bcf per advisory GHSA-4f36-m4hj-cv86. If immediate upgrade is not possible, apply compensating controls that target the two reachability paths: disable or stop the standalone SVG exporter service entirely if SVG export is not a business requirement (this eliminates the attack surface but removes all SVG export functionality), and disable public share links for untrusted or externally authored files (this closes the unauthenticated link-based path but degrades collaboration and review workflows). Because the exploit executes as the exporter service account, run the exporter under a dedicated low-privilege user with no write access outside its working directories and no unnecessary outbound network access, accepting that this bounds rather than removes the injected-command capability. Additionally, restrict file edit rights to trusted users and monitor the exporter process for unexpected child processes or outbound connections as a detection measure; note that no public exploit code has been identified at time of analysis, so these measures are precautionary rather than response to observed exploitation.

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

The root cause is CWE-78 (improper neutralization of special elements used in an OS command), specifically an OS command injection rather than a pure code-evaluation flaw. Penpot's exporter is a standalone service (evidenced by the repository's exporter/ directory, its ClojureScript/shadow-cljs build and dedicated CI workflow) that renders design files into output formats. During SVG generation, a solid fill color on a text object is fed into ImageMagick's ppmcolormask utility via a constructed shell command string; because that string is passed to Node's child_process.exec, which invokes a shell, any shell metacharacters stored in the attacker-controlled fill-color value are interpreted by that shell instead of being treated as literal color data. CPE cpe:2.3:a:penpot:penpot:*:*:*:*:*:*:*:* with a wildcard version, combined with the advisory statement that the flaw is fixed in 2.18.0, indicates every release before that version carries the vulnerable exporter. The scope change in the assessed vector (S:C) is consistent with execution moving from the Penpot web application's authority into the exporter service's process context, and PR:L confirms the primary path requires an authenticated user who can modify file content, with the public-share-link path acting as an additional, more broadly reachable trigger.

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

Payload is planted over the network by a user with edit rights (PR:L) with no interaction (UI:N); command execution crosses into the separate exporter service (S:C) giving full C/I/A impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/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
Changed
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Oct 05, 2026 - 21:02 EUVD
CVE Published
Oct 05, 2026 - 19:53 cve.org
CRITICAL 9.9

DescriptionCVE.org

Penpot is an open-source design and prototyping platform. Prior to 2.18.0, the SVG exporter places an attacker-controlled text object's fill-color value into a ppmcolormask command string and executes that string through child_process.exec. A user who can edit a file can store shell metacharacters in the fill color and trigger SVG export, causing commands to execute with the exporter service's privileges. The same export can be triggered through a valid public share link to a malicious file. This vulnerability is fixed in 2.18.0.

Technical POC Analysis

CWE-78, OS Command Injection.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

A critical command-injection flaw in Penpot's SVG exporter (CVE-2026-105691, CVSS 9.9) allows anyone with edit rights on a design file - or merely a valid public share link - to execute arbitrary commands on the underlying export server when an affected file is rendered. Because the flaw crosses from the design application into the host system with full confidentiality, integrity, and availability impact, a single malicious file could expose design assets and connected data, tamper with exports, or take the export host offline. Penpot is fixed in version 2.18.0, so organizations running earlier releases should treat this as a priority remediation item affecting both internal design teams and any externally shared designs.

Business Impact: High
Compensating Controls

Apply vendor patch (upgrade to Penpot 2.18.0). If the upgrade cannot be completed immediately, interim mitigations are: disable or restrict public share links, restrict design-file edit rights to trusted users, run the exporter service as a low-privilege isolated account or container with egress filtering, and monitor the exporter host for unexpected command execution.

Threat Intelligence Overview

EPSS Score
0.4%
Top 71% exploitable
Prevalence
Low
self-hosted open-source design tool, niche production deployment footprint
Social Media
2
Sightings
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 CRITICAL
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

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

Attack Technique

OS command injection occurs when an application passes unsanitized user input directly into system shell commands.

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

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