CSIRTS // UNIFIED SECURITY ADVISORY FEEDSYS ● ONLINE · POWERED BY INTELFUSIONS.COM

CVE-2026-45260

highCVSS 8.1covered by 1 sourcefirst seen 2026-05-27
Summary Pimcore's WebDAV asset endpoint exposes a MOVE operation through /asset/webdav{path} without adding an authentication plugin in the WebDAV controller. The Tree::move() implementation then performs asset mutation and deletion before checking a current Pimcore user or any asset permissions. An unauthenticated remote attacker who knows two existing asset paths in the same directory can send a WebDAV MOVE request that deletes the source asset. Authenticated low-privileged users may also be able to perform unauthorized asset move or overwrite operations because the move path does not enforce rename, delete, create, or publish permissions. Details The route for WebDAV is globally registered and accepts arbitrary trailing paths: bundles/CoreBundle/config/routing.yaml pimcore_webdav: path: /asset/webdav{path} defaults: { _controller: Pimcore\Bundle\CoreBundle\Controller\WebDavController::webdavAction } requirements: path: '.*' The controller constructs a SabreDAV server but only attaches lock and browser plugins. It does not attach an authentication plugin or perform an explicit user/session check before starting the server: bundles/CoreBundle/src/Controller/WebDavController.php $publicDir = new Asset\WebDAV\Folder($homeDir); $objectTree = new Asset\WebDAV\Tree($publicDir); $server = new \Sabre\DAV\Server($objectTree); $server->setBaseUri($this->generateUrl('pimcore_webdav', ['path' => '/'])); $server->addPlugin($lockPlugin); $server->addPlugin(new \Sabre\DAV\Browser\Plugin()); $server->start(); Most WebDAV file and folder operations perform permission checks through isAllowed(), but Tree::move() does not. In the overwrite path for a same-directory move, it deletes the source asset before resolving the current user: models/Asset/WebDAV/Tree.php if (dirname($sourcePath) == dirname($destinationPath)) { if ($asset = Asset::getByPath('/' . $destinationPath)) { $sourceAsset = Asset::getByPath('/' . $sourcePath); $asset->setData($sourceAsset->getData()); $sourceAss

⚡ Watch CVE-2026-45260

Get an email if CVE-2026-45260 is added to CISA KEV, gains public exploit code, or a new advisory cites it — max one per day, one-click unsubscribe.

Advisory coverage (1)

External references

NVD record for CVE-2026-45260

CVE.org record

Embed the live status

CVE-2026-45260 live status badge — this badge updates automatically when the KEV or exploit status changes. How to embed it →

[![CVE-2026-45260 status](https://www.csirts.com/badge/CVE-2026-45260)](https://www.csirts.com/cve/CVE-2026-45260)