CVE-2026-45806

Penpot: Authenticated SSRF in remote image import via create-file-media-object-from-url

Published Jul 15, 2026 CVSS 3.1 · 7.7 High EPSS < 1% KEV · Not listed
Description
Penpot is an open-source design tool for design and code collaboration. Prior to 2.15.0, Penpot's remote image import passed the user-controlled url from frontend/src/app/main/data/workspace/media.cljs into the backend RPC method :create-file-media-object-from-url in backend/src/app/rpc/commands/media.clj, where media/download-image in backend/src/app/media.clj used the shared HTTP client without destination filtering, allowing an authenticated file editor to reach internal-only endpoints. This issue is fixed in version 2.15.0.

Analysis

AI-generated

Technical impact

Penpot is an open‑source design and code collaboration platform. Before version 2.15.0, its remote image import feature let a user‑controlled URL from frontend/src/app/main/data/workspace/media.cljs be passed to the backend RPC :create‑file‑media‑object‑from‑url defined in backend/src/app/rpc/commands/media.clj. The backend's media/download‑image routine in backend/src/app/media.clj used a shared HTTP client without destination filtering, allowing an authenticated file editor to retrieve content from internal‑only endpoints. This enabled internal network enumeration by fetching data from services that should remain inaccessible from the public Internet. The vulnerability was resolved in release 2.15.0.

Affected Systems

The open‑source design platform Penpot, any installation running a version prior to 2.15.0. The issue was resolved in release 2.15.0, so installations of that version or newer are not affected.

Risk and Exploitability

The CVSS score of 7.7 categorises this vulnerability as high severity. The EPSS score indicates a probability of exploitation less than 1%, and it is not listed in the CISA KEV catalog. The attack requires an authenticated file‑editor account, no special network access beyond the normal Penpot deployment, and the ability to specify an arbitrary URL for image import. Once executed, the attacker can read internal services that should be isolated from the Internet.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the Penpot installation to version 2.15.0 or later, which addresses the CWE‑918 SSRF flaw.
  • If an upgrade cannot be performed immediately, disable the remote image import feature or restrict the :create‑file‑media‑object‑from‑url RPC to users without file‑editor privileges.
  • Ensure that internal‑only services are not exposed through the network pathways that the Penpot instance can reach, and review RBAC to limit file‑editor permissions.

Generated by OpenCVE AI on July 31, 2026 at 03:28 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
First Time appeared Penpot
Penpot penpot
Vendors & Products Penpot
Penpot penpot
Type Values Removed Values Added
Description Penpot is an open-source design tool for design and code collaboration. Prior to 2.15.0, Penpot's remote image import passed the user-controlled url from frontend/src/app/main/data/workspace/media.cljs into the backend RPC method :create-file-media-object-from-url in backend/src/app/rpc/commands/media.clj, where media/download-image in backend/src/app/media.clj used the shared HTTP client without destination filtering, allowing an authenticated file editor to reach internal-only endpoints. This issue is fixed in version 2.15.0.
Title Penpot: Authenticated SSRF in remote image import via create-file-media-object-from-url
Weaknesses CWE-918
References
Metrics cvssV3_1

{'score': 7.7, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N'}

Weaknesses
  • CWE-918

    Server-Side Request Forgery (SSRF)

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Jul 20, 2026, 2:53 PM
Reserved
May 13, 2026, 8:19 AM
Status
Deferred
Published
Jul 15, 2026, 4:16 PM
Modified
Jul 20, 2026, 4:17 PM