CVE-2026-47666: Penpot: Stored XSS via custom font family name injected into a @font-face style rule
Penpot is an open-source design and prototyping platform. In versions up to and including 2.14.3, Penpot is vulnerable to stored cross-site scripting through custom font family names, which are interpolated into a @font-face CSS rule and injected into the page as HTML without sanitization. Because the backend accepts an arbitrary font-family string and the frontend writes the resulting style through innerHTML, a name containing markup such as a closing style tag followed by a script can break out of the style element and execute JavaScript on the Penpot origin. The attack is passive: any team member who opens a file referencing the malicious font triggers script execution simply by rendering the page, allowing theft of session cookies, actions performed as the victim, and access to their files and projects. This issue is fixed in version 2.15.3.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Penpotto a version that resolves this vulnerability.Fixed in 2.15.3
Event History
Frequently Asked Questions
Which users are exposed to this issue?
Any Penpot team member who opens a file that references a malicious custom font can trigger the stored script. The script executes on the Penpot origin and can access the victim's files and projects or perform actions as that user.
What does an attacker need to exploit the vulnerability?
The attacker needs privileges to submit or save a custom font family name in a Penpot file. Exploitation then requires a victim to open the file; no additional interaction is required after the file renders.
Are default deployments affected?
Deployments running Penpot 2.14.3 or earlier are affected because the backend accepts arbitrary font-family strings and the frontend inserts the generated style using innerHTML. The provided information does not identify any configuration setting that disables the vulnerable behavior.
How can teams determine whether they may already be affected?
Review Penpot files and custom font-family values for unexpected markup, particularly values containing style-breaking content such as a closing style tag followed by script content. Also investigate suspicious activity associated with users who opened files containing untrusted custom fonts.
What is the remediation?
Upgrade Penpot to version 2.15.3, which fixes the issue. Until patching is complete, treat files containing untrusted custom fonts as potentially malicious and avoid opening them with privileged or authenticated accounts.