Skip to content
Heist/ feed
Back to feed
Medium

Penpot: Share-link page-scope escape — comment RPCs leak comment content, author identity, and all page-ids for pages outside the share scope

Type: advisorySources: OSV

Penpot is an open-source design and prototyping platform. Prior to 2.18.0, the get-comment-threads, get-comment-thread, and get-comments RPC commands use check-comment-permissions! but do not apply the share link's pages restriction. A holder of a page-scoped share link can retrieve comment threads and full comment bodies from other pages in the same file, including commenter names, email addresses, photos, and page identifiers. The disclosed page identifiers can also be used with affected page-reading functionality to access unshared design content. This issue is fixed in version 2.18.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-105684
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 08:27 UTC · Revision 1

Source evidence

Penpot: Share-link page-scope escape — comment RPCs leak comment content, author identity, and all page-ids for pages outside the share scope

core-osv · Original source

Published 5 Oct 2026, 19:44 UTC

Penpot is an open-source design and prototyping platform. Prior to 2.18.0, the get-comment-threads, get-comment-thread, and get-comments RPC commands use check-comment-permissions! but do not apply the share link's pages restriction. A holder of a page-scoped share link can retrieve comment threads and full comment bodies from other pages in the same file, including commenter names, email addresses, photos, and page identifiers. The disclosed page identifiers can also be used with affected page-reading functionality to access unshared design content. This issue is fixed in version 2.18.0.

osv:CVE-2026-105684
Complete source record
{
  "id": "13682e8d686b908cc300427ebe706a66ecb694b8db0562f59e20ec3867d095e3",
  "url": "https://osv.dev/vulnerability/CVE-2026-105684",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Penpot: Share-link page-scope escape — comment RPCs leak comment content, author identity, and all page-ids for pages outside the share scope",
    "summary": "Penpot is an open-source design and prototyping platform. Prior to 2.18.0, the get-comment-threads, get-comment-thread, and get-comments RPC commands use check-comment-permissions! but do not apply the share link's pages restriction. A holder of a page-scoped share link can retrieve comment threads and full comment bodies from other pages in the same file, including commenter names, email addresses, photos, and page identifiers. The disclosed page identifiers can also be used with affected page-reading functionality to access unshared design content. This issue is fixed in version 2.18.0.",
    "evidence": "osv:CVE-2026-105684",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-105684",
      "aliases": [
        "CVE-2026-105684",
        "GHSA-fwm4-hm9f-rmcp"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/penpot/penpot",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "5baffdc213f0deaaeb318e97a41d611ac0656a94"
                },
                {
                  "fixed": "6d9f411fab28a8f60cf807728f4fac2ecb646ca6"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.18.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "6d9f411fab28a8f60cf807728f4fac2ecb646ca6"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "5baffdc213f0deaaeb318e97a41d611ac0656a94"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "2.18.0"
                  }
                ]
              }
            }
          ],
          "versions": [
            "2.17.1-RC5",
            "2.18.0-RC1",
            "2.17.1-RC4",
            "2.17.1-RC3",
            "2.17.1-RC2",
            "2.17.1-RC1",
            "2.17.0",
            "2.17.0-RC6",
            "2.17.0-RC5",
            "2.17.0-RC4",
            "2.17.0-RC3",
            "2.17.0-RC1",
            "2.16.1-RC2",
            "2.16.0",
            "2.16.0-RC13",
            "2.16.0-RC11",
            "2.16.0-RC9",
            "2.16.0-RC8",
            "2.16.0-RC7",
            "2.16.0-RC6",
            "2.16.0-RC5",
            "2.16.0-RC4",
            "2.16.0-RC3",
            "2.16.0-RC2",
            "2.16.0-RC1",
            "2.15.0-RC1",
            "2.14.0-RC4",
            "2.14.0-RC3",
            "2.14.0-RC2",
            "2.14.0-RC1",
            "2.10.0-RC1",
            "2.7.0-RC1",
            "2.6.0-RC1",
            "2.5.0-RC1",
            "2.5.0-DEV",
            "pre-lazy-loading",
            "1.14.1-beta",
            "1.14.0-beta",
            "1.9.0-alpha",
            "1.8.2-alpha",
            "1.8.1-alpha",
            "1.8.0-alpha",
            "1.7.4-alpha",
            "1.7.3-alpha",
            "1.7.2-alpha",
            "1.7.1-alpha",
            "1.7.0-alpha",
            "1.6.5-alpha",
            "1.6.4-alpha",
            "1.6.3-alpha",
            "1.6.2-alpha",
            "1.6.1-alpha",
            "1.6.0-alpha",
            "1.5.4-alpha",
            "1.5.3-alpha",
            "1.5.2-alpha",
            "1.5.1-alpha",
            "1.5.0-alpha",
            "1.4.1-alpha",
            "1.4.0-alpha",
            "1.4.0-dev",
            "1.3.0-alpha",
            "1.2.0-alpha",
            "1.1.0-alpha",
            "1.0.0-alpha",
            "0.1.0",
            "0.0.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-105684.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:27.121017299Z",
      "provider": "osv",
      "references": [
        "https://github.com/penpot/penpot/releases/tag/2.18.0",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/105xxx/CVE-2026-105684.json",
        "https://github.com/penpot/penpot/security/advisories/GHSA-fwm4-hm9f-rmcp",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-105684",
        "https://github.com/penpot/penpot/commit/6d9f411fab28a8f60cf807728f4fac2ecb646ca6"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-200",
          "CWE-863"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/105xxx/CVE-2026-105684.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-105684",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 493824,
  "published_at": "2026-10-05T19:44:07.526+00:00"
}