Skip to content
Heist/ feed
Back to feed
High

Craft CMS: Missing peer-permission check in `AssetsController::actionDeleteFolder` allows deletion of other users' assets

Type: advisorySources: OSV

Craft CMS is a content management system (CMS). In versions 5.0.0-RC1 through 5.9.21 and 4.0.0-RC1 through 4.17.14, theAssetsController::actionDeleteFolder() only requires the deleteAssets: permission for the target folder. It never enforces deletePeerAssets:, even though Assets::deleteFoldersByIds() cascades deletion to every descendant folder and every asset inside, regardless of the uploader's assigned privileges. A low-privilege user who has been granted folder-management rights on a shared volume can therefore destroy assets uploaded by other users (peer assets), bypassing the per-asset peer-permission check that the sibling actionDeleteAsset endpoint correctly applies. This issue has been fixed in versions 4.17.15 and 5.9.22.

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

Source evidence

Craft CMS: Missing peer-permission check in `AssetsController::actionDeleteFolder` allows deletion of other users' assets

core-osv · Original source

Published 1 Jul 2026, 22:37 UTC

Craft CMS is a content management system (CMS). In versions 5.0.0-RC1 through 5.9.21 and 4.0.0-RC1 through 4.17.14, theAssetsController::actionDeleteFolder() only requires the deleteAssets: permission for the target folder. It never enforces deletePeerAssets:, even though Assets::deleteFoldersByIds() cascades deletion to every descendant folder and every asset inside, regardless of the uploader's assigned privileges. A low-privilege user who has been granted folder-management rights on a shared volume can therefore destroy assets uploaded by other users (peer assets), bypassing the per-asset peer-permission check that the sibling actionDeleteAsset endpoint correctly applies. This issue has been fixed in versions 4.17.15 and 5.9.22.

osv:CVE-2026-50284
Complete source record
{
  "id": "44848b4e78e6743947d905acac93a8ff071e3d7dc600f378cd491ff0622d6302",
  "url": "https://osv.dev/vulnerability/CVE-2026-50284",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Craft CMS: Missing peer-permission check in `AssetsController::actionDeleteFolder` allows deletion of other users' assets",
    "summary": "Craft CMS is a content management system (CMS). In versions 5.0.0-RC1 through 5.9.21 and 4.0.0-RC1 through 4.17.14, theAssetsController::actionDeleteFolder() only requires the deleteAssets: permission for the target folder. It never enforces deletePeerAssets:, even though Assets::deleteFoldersByIds() cascades deletion to every descendant folder and every asset inside, regardless of the uploader's assigned privileges. A low-privilege user who has been granted folder-management rights on a shared volume can therefore destroy assets uploaded by other users (peer assets), bypassing the per-asset peer-permission check that the sibling actionDeleteAsset endpoint correctly applies. This issue has been fixed in versions 4.17.15 and 5.9.22.",
    "evidence": "osv:CVE-2026-50284",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-50284",
      "aliases": [
        "CVE-2026-50284",
        "GHSA-7h62-6v23-v8fm"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:L/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/craftcms/cms",
              "type": "GIT",
              "events": [
                {
                  "introduced": "daac7c1da2f701f2e9ddee1da1457ce61660b581"
                },
                {
                  "fixed": "609a87b01080720b8a6c33866c33018aeb32fc0a"
                },
                {
                  "fixed": "b4e08977f0c9bdf002a77f9f6d1346cd55ac0598"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "4.0.0-RC1"
                      },
                      {
                        "fixed": "4.17.15"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "b4e08977f0c9bdf002a77f9f6d1346cd55ac0598"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-50284.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:26.094491264Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/50xxx/CVE-2026-50284.json",
        "https://github.com/craftcms/cms/security/advisories/GHSA-7h62-6v23-v8fm",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-50284",
        "https://github.com/craftcms/cms/commit/b4e08977f0c9bdf002a77f9f6d1346cd55ac0598"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-862"
        ],
        "cna_assigner": "GitHub_M",
        "unresolved_ranges": [
          {
            "extracted_events": [
              {
                "range": [
                  {
                    "introduced": "=>= 5.0.0-RC1, < 5.9.22"
                  },
                  {
                    "last_affected": "=>= 5.0.0-RC1, < 5.9.22"
                  }
                ],
                "source": "AFFECTED_FIELD",
                "strategy": "StandaloneSingleVersion"
              }
            ]
          }
        ],
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/50xxx/CVE-2026-50284.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-50284",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 492663,
  "published_at": "2026-07-01T22:37:30.334+00:00"
}