Cockpit CMS
CVE-2026-57856
HIGH
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network API reachable with low-complexity '../' payload; requires an authenticated low-privileged account (PR:L); traversal enables cross-bucket read, write, and delete so C/I/A all High; scope unchanged within the app's own storage.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
3DescriptionCVE.org
Cockpit CMS contains a path traversal vulnerability in the Bucket file storage API (/system/buckets/api). The api() method in modules/System/Controller/Buckets.php sanitizes the bucket name with preg_replace('/[^a-zA-Z0-9-_\\.]/','', $bucket), which permits '..' and '../' sequences. The sanitized value is interpolated into a Flysystem path as uploads://buckets/{bucket}. Flysystem's WhitespacePathNormalizer resolves 'buckets/..' to the empty string (the uploads storage root) without raising PathTraversalDetected because the '..' has a preceding component to consume. An authenticated low-privileged user can send a crafted request with a '../' bucket name to list, upload, and delete files across all buckets, including those belonging to other users or roles
AnalysisAI
Path-traversal privilege escalation in Cockpit CMS Bucket file storage API (before 2.14.0) lets an authenticated low-privileged user bypass per-bucket isolation by supplying a '../' bucket name, granting cross-bucket read, upload, and delete over all files regardless of owner or role. The flaw stems from an incomplete sanitization regex that strips dangerous characters but preserves dot sequences, which Flysystem then normalizes down to the storage root. No public exploit is identified at time of analysis, though a proof-of-concept gist is referenced; the issue was reported by VulnCheck and a vendor patch is available.
Technical ContextAI
The vulnerability lives in the api() method of modules/System/Controller/Buckets.php. Bucket names are sanitized with preg_replace('/[^a-zA-Z0-9-_\.]/','', $bucket), a denylist that explicitly permits the dot character, so '..' and '../' survive sanitization. The value is interpolated into a Flysystem virtual path 'uploads://buckets/{bucket}'. Because Flysystem's WhitespacePathNormalizer only raises PathTraversalDetected when a '..' has no preceding path component to consume, 'buckets/..' collapses to the empty string - the uploads storage root - silently. This is a textbook CWE-22 (Improper Limitation of a Pathname to a Restricted Directory) where a broken input filter combines with a normalization edge case. Affected product per CPE is cpe:2.3:a:cockpit_hq:cockpit_cms across all versions prior to the fix; Cockpit CMS is a PHP-based headless/API-first content management system.
RemediationAI
Vendor-released patch: upgrade to Cockpit CMS 2.14.0 or later (fix commit dde2d1d74f5f4e11de42a298918ea8c9684f932c, released 2026-03-30). If immediate upgrade is not possible, apply the upstream fix by correcting bucket-name validation in modules/System/Controller/Buckets.php so dot sequences are rejected - replace the permissive preg_replace denylist with an allowlist that forbids '.' or explicitly blocks '..' before the value reaches the Flysystem path. As a compensating control, restrict access to the /system/buckets/api endpoint at the reverse proxy or application ACL layer to trusted administrators only, and audit/tighten account provisioning so low-privileged or self-registered users cannot reach the Bucket API (trade-off: may break legitimate bucket workflows for non-admin roles). Review upload storage for unauthorized file changes or deletions predating the patch. Reference the VulnCheck advisory (https://www.vulncheck.com/advisories/cockpit-cms-path-traversal-via-bucket-name-in-bucket-file-storage-api).
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
Same weakness CWE-22 – Path Traversal
View allSame technique Path Traversal
View allShare
External POC / Exploit Code
Leaving vuln.today