CVE-2026-69127: Kirby System Path Exposure From Error Vulnerability

MODERATE
Advisory Identifier: GHSA-rf2p-vh74-7vvh
CWE-497
Published
Advisory Summary

CVE-2026-69127 is a MODERATE system path exposure from error vulnerability (CWE-497: Exposure of Sensitive System Information to an Unauthorized Control Sphere) affecting Kirby libraries in the Packagist ecosystem. The issue involves system path exposure from error messages in the rest api. Remediation is available by upgrading affected packages to version 4.9.5, 5.5.2.

CVE-2026-69127 at a Glance

CVE Identifier CVE-2026-69127
GHSA Identifier GHSA-rf2p-vh74-7vvh
Severity MODERATE
CVSS v3.1 Base Score N/A
CWE Classification CWE-497: Exposure of Sensitive System Information to an Unauthorized Control Sphere
Affected Product Kirby
Package Ecosystem Packagist
Published Date
Last Updated

How to Fix CVE-2026-69127

To remediate this vulnerability, upgrade all affected Kirby dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

getkirby/cms fixed: 4.9.5
Upgrade getkirby/cms to 4.9.5
getkirby/cms fixed: 5.5.2
Upgrade getkirby/cms to 5.5.2
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

inspect dependencies for getkirby/cms

How to Check if You Are Affected

To determine whether your application is affected by CVE-2026-69127, inspect your project dependencies for Kirby:

inspect dependencies for getkirby/cms

Analyze the terminal output to locate any version of Kirby in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 4.9.5), your application is affected.

Note: Verify declared build manifests and deployed runtime container environments.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-497: Exposure of Sensitive System Information to an Unauthorized Control Sphere, where the product does not properly prevent sensitive system-level information from being accessed by unauthorized actors who do not have the same level of access to the underlying system as the product does. In Kirby, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

### TL;DR This vulnerability affects all Kirby sites that have not disabled the REST API with the `'api' => false` option. It was possible to trigger a PHP error in the API backend that would expose the full filesystem path of the Kirby installation on the server. This could be used to guess the default `content.salt` or prepare specialized attacks. ---- ### Introduction An information exposure occurs when system data or debugging information leaves the program through an output stream or logging function that makes it accessible to unauthorized parties. Using other weaknesses, an attacker could cause errors to occur; the response to these errors can reveal detailed system information, along with other impacts. An attacker can use messages that reveal technologies, operating systems, and product versions to tune the attack against known vulnerabilities in these technologies. A product may use diagnostic methods that provide significant implementation details such as stack traces as part of its error handling mechanism. ### Affected components Kirby's REST API at `/api` returns JSON data for each request. If an error occurs during processing of the request, a special error handler converts this error to JSON data that API frontends can handle. The returned data for errors depends on the debugging mode. If the `debug` option is enabled, the JSON data contains fields for the path and line of the affected file, the internal exception class and the API route that caused the error. This data is omitted from error responses in production (when the `debug` option is disabled). ### Impact Some internal errors may contain sensitive information in the error message itself. This is often the case with PHP errors. In affected releases, the REST API error handler did not sanitize error messages for sensitive information. This exposed system information like the full source path to external API users, including users without authentication. This could be used to guess the default `content.salt` or prepare specialized attacks. ### Patches The problem has been patched in [Kirby 4.9.5](https://github.com/getkirby/kirby/releases/tag/4.9.5) and [Kirby 5.5.2](https://github.com/getkirby/kirby/releases/tag/5.5.2). Please update to one of these or a [later version](https://github.com/getkirby/kirby/releases) to fix the vulnerability. In all of the mentioned releases, Kirby has hardened the API error handler to only expose full error messages for exceptions in the `Kirby\Exception` namespace. All other errors are only exposed in debug mode (with disguised paths, keeping only the paths relative to the Kirby installation). Outside of debug mode, general exceptions and PHP errors are replaced with a generic error message. ### Credits Thanks to Peter Levashov (@petersevera) for responsibly reporting the identified issue.

CVE-2026-69127 Affected Kirby Versions

2 component(s)
Fixed Versions:
4.9.55.5.2
Product / Package Ecosystem Affected Versions Fixed Version
getkirby/cms
Packagist
< 4.9.5
4.9.5
getkirby/cms
Packagist
≥ 5.0.0
< 5.5.2
5.5.2

References

Frequently Asked Questions

What is CVE-2026-69127?
CVE-2026-69127 is a security vulnerability in Kirby involving System path exposure from error messages in the REST API under CWE-497: Exposure of Sensitive System Information to an Unauthorized Control Sphere.
Which Kirby versions are affected?
Affected versions include releases prior to 4.9.5, 5.5.2 across affected packages: getkirby/cms.
What version fixes CVE-2026-69127?
Upgrading to 4.9.5, 5.5.2 (or the latest patched release for your respective branch) resolves the vulnerability.
Is getkirby/cms affected?
Yes, getkirby/cms is affected in releases prior to 4.9.5, 5.5.2. Upgrade your dependency to 4.9.5, 5.5.2 or later.
What CWE is associated with CVE-2026-69127?
CVE-2026-69127 is classified under CWE-497: Exposure of Sensitive System Information to an Unauthorized Control Sphere (The product does not properly prevent sensitive system-level information from being accessed by unauthorized actors who do not have the same level of access to the underlying system as the product does.).
How can I check Packagist dependencies for CVE-2026-69127?
Run the dependency tree command: 'inspect dependencies for getkirby/cms'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-rf2p-vh74-7vvh",
  "modified" : "2026-09-01T16:37:47Z",
  "published" : "2026-09-01T16:37:47Z",
  "aliases" : [ "CVE-2026-69127" ],
  "summary" : "Kirby: System path exposure from error messages in the REST API",
  "details" : "### TL;DR\n\nThis vulnerability affects all Kirby sites that have not disabled the REST API with the `'api' => false` option.\n\nIt was possible to trigger a PHP error in the API backend that would expose the full filesystem path of the Kirby installation on the server. This could be used to guess the default `content.salt` or prepare specialized attacks.\n\n----\n\n### Introduction\n\nAn information exposure occurs when system data or debugging information leaves the program through an output stream or logging function that makes it accessible to unauthorized parties. Using other weaknesses, an attacker could cause errors to occur; the response to these errors can reveal detailed system information, along with other impacts. An attacker can use messages that reveal technologies, operating systems, and product versions to tune the attack against known vulnerabilities in these technologies. A product may use diagnostic methods that provide significant implementation details such as stack traces as part of its error handling mechanism.\n\n### Affected components\n\nKirby's REST API at `/api` returns JSON data for each request. If an error occurs during processing of the request, a special error handler converts this error to JSON data that API frontends can handle.\n\nThe returned data for errors depends on the debugging mode. If the `debug` option is enabled, the JSON data contains fields for the path and line of the affected file, the internal exception class and the API route that caused the error. This data is omitted from error responses in production (when the `debug` option is disabled).\n\n### Impact\n\nSome internal errors may contain sensitive information in the error message itself. This is often the case with PHP errors.\n\nIn affected releases, the REST API error handler did not sanitize error messages for sensitive information.\n\nThis exposed system information like the full source path to external API users, including users without authentication. This could be used to guess the default `content.salt` or prepare specialized attacks.\n\n### Patches\n\nThe problem has been patched in [Kirby 4.9.5](https://github.com/getkirby/kirby/releases/tag/4.9.5) and [Kirby 5.5.2](https://github.com/getkirby/kirby/releases/tag/5.5.2). Please update to one of these or a [later version](https://github.com/getkirby/kirby/releases) to fix the vulnerability.\n\nIn all of the mentioned releases, Kirby has hardened the API error handler to only expose full error messages for exceptions in the `Kirby\\Exception` namespace. All other errors are only exposed in debug mode (with disguised paths, keeping only the paths relative to the Kirby installation). Outside of debug mode, general exceptions and PHP errors are replaced with a generic error message.\n\n### Credits\n\nThanks to Peter Levashov (@petersevera) for responsibly reporting the identified issue.",
  "severity" : [ {
    "type" : "CVSS_V4",
    "score" : "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "Packagist",
      "name" : "getkirby/cms"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "4.9.5"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 4.9.4"
    }
  }, {
    "package" : {
      "ecosystem" : "Packagist",
      "name" : "getkirby/cms"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "5.0.0"
      }, {
        "fixed" : "5.5.2"
      } ]
    } ]
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/getkirby/kirby/security/advisories/GHSA-rf2p-vh74-7vvh"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-69127"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/getkirby/kirby/commit/469c5a1a2973811591d996bc967eead3565df1f0"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/getkirby/kirby/commit/58f819988436b31969078bc4655452dd48546451"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/getkirby/kirby"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-497" ],
    "severity" : "MODERATE",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-09-01T16:37:47Z",
    "nvd_published_at" : "2026-08-07T19:18:53Z"
  }
}