Penpot SVG Exporter: OS command injection via fill-color
Summary
The SVG exporter of Penpot, an open-source design and prototyping platform, passes the fill color of text objects unsanitized into a shell command executed via child_process.exec. An attacker who can edit a file, or who holds a valid public share link to a malicious file, can store shell metacharacters in the fill color and trigger an SVG export. Commands then run with the privileges of the exporter service.
Affected
- Penpot versions prior to 2.18.0 (self-hosted deployments)
- Penpot SVG exporter service
Fixed in
- Fixed in Penpot 2.18.0 (GHSA-4f36-m4hj-cv86)
- The vendor advisory also references later 2.18.x releases; verify the fix version on the GHSA page
Workaround
Unknown.
Exploitation
- CISA SSVC: exploitation status 'poc', automatable: no
- No known exploitation in the wild found at the time of research
- Public proof of concept reported by CISA SSVC
Our recommendation
- Upgrade self-hosted Penpot to 2.18.0 or a later 2.18.x release
- Until patched, restrict file edit rights and review or disable public share links
- Restrict the exporter's network access and limit its container privileges
- Monitor the exporter service for unexpected child processes
- Priority: high for internet-facing or externally shared self-hosted instances
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- GitHub Security Advisory GHSA-4f36-m4hj-cv86 github.com
- Penpot 2.18.0 release github.com
- OSV CVE-2026-105691 osv.dev
- VulDB CVE-2026-105691 vuldb.com
- Fix commit aa3bc1a github.com
Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 30 Oct 2026, 15:43.
Original description (NVD)
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.
NVD references (5)
- https://github.com/penpot/penpot/commit/aa3bc1ae984577f0354d4270d2546e15985f4bcf
- https://github.com/penpot/penpot/pull/11272
- https://github.com/penpot/penpot/releases/tag/2.18.0
- https://github.com/penpot/penpot/security/advisories/GHSA-4f36-m4hj-cv86
- https://github.com/penpot/penpot/security/advisories/GHSA-4f36-m4hj-cv86
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.
Affected? We can help.
We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.
