Skip to content
Heist/ feed
Back to feed
Medium

Kirby: Content locks disclose IDs and emails of inaccessible users from `users.access/list` permissions

Type: advisorySources: OSV

Kirby is an open-source content management system. In versions prior to 4.9.1 and 5.4.1, the content-locking feature returned lock information without checking the requesting user's access permissions. Kirby's Panel includes a content-locking feature that records which user currently has a model open for editing. This lock prevents conflicting edits by multiple users and displays the locking user's identity in the Panel UI so other users know who to contact. Internally, the locking user's email address and identifier are included in every Panel view payload and in error responses returned when a user attempts to edit a model that is currently locked by another user. This allowed a low-privilege authenticated Panel user, whose role was configured with users.access: false or users.list: false, to learn the email address and identifier of any user who currently had a model open for editing in the Panel, including administrators and other higher-privilege users. Content locks are active for a configurable window (10 minutes by default). The email address can allow admin account enumeration, target phishing, and feed credential-stuffing attacks against the Kirby installation or other sites. The internal user ID can be cross-referenced with other endpoints once the requester has obtained a higher privilege through unrelated means. This issue has been fixed in versions 4.9.1 and 5.4.1.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-45334
Confirmed fixed CVEs
Not specified
Updated in this feed
6 Nov 2026, 00:22 UTC · Revision 1

Source evidence

Kirby: Content locks disclose IDs and emails of inaccessible users from `users.access/list` permissions

core-osv · Original source

Published 16 Jul 2026, 21:42 UTC

Kirby is an open-source content management system. In versions prior to 4.9.1 and 5.4.1, the content-locking feature returned lock information without checking the requesting user's access permissions. Kirby's Panel includes a content-locking feature that records which user currently has a model open for editing. This lock prevents conflicting edits by multiple users and displays the locking user's identity in the Panel UI so other users know who to contact. Internally, the locking user's email address and identifier are included in every Panel view payload and in error responses returned when a user attempts to edit a model that is currently locked by another user. This allowed a low-privilege authenticated Panel user, whose role was configured with users.access: false or users.list: false, to learn the email address and identifier of any user who currently had a model open for editing in the Panel, including administrators and other higher-privilege users. Content locks are active for a configurable window (10 minutes by default). The email address can allow admin account enumeration, target phishing, and feed credential-stuffing attacks against the Kirby installation or other sites. The internal user ID can be cross-referenced with other endpoints once the requester has obtained a higher privilege through unrelated means. This issue has been fixed in versions 4.9.1 and 5.4.1.

osv:CVE-2026-45334
Complete source record
{
  "id": "d327f8c98aaa08e28c0083231a8258180ba485b6856d1820ff6606f5a99de2e5",
  "url": "https://osv.dev/vulnerability/CVE-2026-45334",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Kirby: Content locks disclose IDs and emails of inaccessible users from `users.access/list` permissions",
    "summary": "Kirby is an open-source content management system. In versions prior to 4.9.1 and 5.4.1, the content-locking feature returned lock information without checking the requesting user's access permissions. Kirby's Panel includes a content-locking feature that records which user currently has a model open for editing. This lock prevents conflicting edits by multiple users and displays the locking user's identity in the Panel UI so other users know who to contact. Internally, the locking user's email address and identifier are included in every Panel view payload and in error responses returned when a user attempts to edit a model that is currently locked by another user. This allowed a low-privilege authenticated Panel user, whose role was configured with users.access: false or users.list: false, to learn the email address and identifier of any user who currently had a model open for editing in the Panel, including administrators and other higher-privilege users. Content locks are active for a configurable window (10 minutes by default). The email address can allow admin account enumeration, target phishing, and feed credential-stuffing attacks against the Kirby installation or other sites. The internal user ID can be cross-referenced with other endpoints once the requester has obtained a higher privilege through unrelated means. This issue has been fixed in versions 4.9.1 and 5.4.1.",
    "evidence": "osv:CVE-2026-45334",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-45334",
      "aliases": [
        "CVE-2026-45334",
        "GHSA-39vq-49qm-r2mc"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/getkirby/kirby",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "2b37e83368eaf852414db77049d21e61c66ed80f"
                },
                {
                  "introduced": "2ff182ba39ddea19fa1615bd3733f734b5e53842"
                },
                {
                  "fixed": "b583392a724601698426c21c593b6a3d6d702c49"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "4.9.1"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "5.0.0"
                      },
                      {
                        "fixed": "5.4.1"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "b583392a724601698426c21c593b6a3d6d702c49"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "5.4.1"
                  }
                ]
              }
            }
          ],
          "versions": [
            "5.4.0",
            "4.9.0",
            "4.8.0",
            "5.3.3",
            "5.3.2",
            "5.3.1",
            "5.3.0",
            "5.2.3",
            "5.2.2",
            "5.2.1",
            "5.2.0",
            "5.1.4",
            "5.1.3",
            "5.1.2",
            "5.1.1",
            "5.1.0",
            "5.0.4",
            "5.0.3",
            "5.0.2",
            "5.0.1",
            "5.0.0",
            "4.7.2",
            "4.7.1",
            "4.7.0",
            "4.6.1",
            "4.6.0",
            "4.5.0",
            "4.4.1",
            "4.4.0",
            "4.3.1",
            "4.3.0",
            "4.2.0",
            "4.1.2",
            "4.1.1",
            "4.1.0",
            "3.9.8",
            "4.0.3",
            "4.0.2",
            "4.0.1",
            "4.0.0",
            "3.9.7",
            "3.9.6.1",
            "3.9.6",
            "3.8.4",
            "3.9.6-rc.1",
            "3.9.5",
            "3.9.4",
            "3.9.3",
            "3.9.2",
            "3.9.1",
            "3.9.0",
            "3.8.3",
            "3.8.2",
            "3.8.1.1",
            "3.8.1",
            "3.8.0",
            "3.7.5",
            "3.7.4",
            "3.7.3",
            "3.6.6",
            "3.7.4-rc.1",
            "3.5.7.1",
            "3.7.2.1",
            "3.7.2",
            "3.7.1",
            "3.7.0.2",
            "3.7.0.1",
            "3.7.0",
            "3.6.5",
            "3.6.4",
            "3.6.3.1",
            "3.6.3",
            "3.6.2",
            "3.6.2-rc.3",
            "3.6.2-rc.2",
            "3.6.2-rc.1",
            "3.6.1.1",
            "3.6.0",
            "3.5.7",
            "3.5.6",
            "3.5.5",
            "3.5.4",
            "3.5.3.1",
            "3.5.3",
            "3.5.2",
            "3.5.1",
            "3.5.1-rc.1",
            "3.5.0",
            "3.5.0-rc.7",
            "3.5.0-rc.6",
            "3.5.0-rc.5",
            "3.5.0-rc.4",
            "3.5.0-rc.3",
            "3.5.0-rc.2",
            "3.5.0-rc.1",
            "3.4.2",
            "3.4.1",
            "3.4.0",
            "3.3.6",
            "3.3.5",
            "3.3.4",
            "3.3.3",
            "3.3.2",
            "3.3.1",
            "3.3.0",
            "3.2.5",
            "3.2.5-rc.2",
            "3.2.5-rc.1",
            "3.2.3-rc.1",
            "3.2.2",
            "3.2.1",
            "3.2.1-rc.1",
            "3.2.0",
            "3.2.0-rc.4",
            "3.2.0-rc.3",
            "3.2.0-rc.2",
            "3.2.0-rc.1",
            "3.1.4",
            "3.1.4-rc.1",
            "3.1.3",
            "3.1.3-rc.1",
            "3.1.2",
            "3.1.2-rc.1",
            "3.1.1",
            "3.1.0",
            "3.1.0-rc.1",
            "3.0.3",
            "3.0.3-rc.3",
            "3.0.3-rc.2",
            "3.0.3-rc.1",
            "3.0.2",
            "3.0.2-rc.1",
            "3.0.1",
            "3.0.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-45334.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:45.379553051Z",
      "provider": "osv",
      "references": [
        "https://github.com/getkirby/kirby/releases/tag/5.4.1",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/45xxx/CVE-2026-45334.json",
        "https://github.com/getkirby/kirby/security/advisories/GHSA-39vq-49qm-r2mc",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-45334"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-862"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/45xxx/CVE-2026-45334.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-45334",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 513446,
  "published_at": "2026-07-16T21:42:51.081+00:00"
}