CVE-2020-26255 is a critical-severity (CVSS 9.1) Unrestricted File Upload vulnerability in getkirby/panel. A fix is available for getkirby/panel — see the affected versions and patch details below.
Kirby Panel users could upload PHP Phar archives as content files before v2.5.14 and v3.4.5
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
CVE-2020-26255 by exploitation likelihood (EPSS) against impact (CVSS). Outside the shaded patch-first corner.
Where this sits among everything scored
Of 385,738 CVEs with a current EPSS score, this one falls in the < 10% band (highlighted). Counts from FIRST.org, log-scaled.
Real-World Exposure
getkirby/panel🐘getkirby/cmsReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects Packagist packages — download data is not available via public APIs for these ecosystems.
Description
Impact
An editor with full access to the Kirby Panel can upload a PHP .phar file and execute it on the server. This vulnerability is critical if you might have potential attackers in your group of authenticated Panel users, as they can gain access to the server with such a Phar file.
Visitors without Panel access cannot use this attack vector.
Patches
The problem has been patched in Kirby 2.5.14 and Kirby 3.4.5. Please update to one of these or a later version to fix the vulnerability.
Note: Kirby 2 reaches end of life on December 31, 2020. We therefore recommend to upgrade your Kirby 2 sites to Kirby 3. If you cannot upgrade, we still recommend to update to Kirby 2.5.14.
Workarounds
Kirby 2 sites on older releases can also be patched by applying the changes from this commit.
Credits
Thanks to Thore Imhof of Accenture for reporting the problem.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐘Packagist | getkirby/panel | all versions | 2.5.14composer require getkirby/panel:^2.5.14 |
| 🐘Packagist | getkirby/cms | ≥ 3.0.0&&< 3.4.5 | 3.4.5composer require getkirby/cms:^3.4.5 |
Affected Products
kirbygetkirbypanelgetkirbyDetection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for getkirby/panel, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update getkirby/panel to 2.5.14 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2020-26255 is resolved across your whole dependency graph.
Workarounds
Treat uploaded files as untrusted until proven otherwise: validate the actual content type rather than the supplied extension, store uploads outside the web root on a volume mounted without execute permission, and rename them to server-generated identifiers so an attacker cannot choose the path a request will later resolve.
Frequently Asked Questions
Is CVE-2020-26255 in your dependencies?
Find it across Packagist, including transitive dependencies.