CVE-2026-44176
Full vulnerability record from the local CVENow database.
Description
Kirby is an open-source content management system. Versions prior to 4.9.1 and 5.4.1 do not check the `pages.access` permission during page draft rendering. Permissions are defined for each user role in the user blueprint (site/blueprints/users/...). It is also possible to customize the permissions for each target model in the model blueprints (such as in site/blueprints/pages/...) using the options feature. The permissions and options together control the authorization of user actions. Kirby provides the pages.access and pages.list permissions (among others). The list permission controls whether affected models appear in lists throughout the Panel and REST API. The access permission has the same effect but also disables direct access to the affected models. This vulnerability affects the path resolver for the main CMS router. The resolver takes an input path from the requested URL and determines which model (page or file) should be rendered. When a path is requested that points to a page draft, the resolver checks that the request either contains a valid preview token or is authenticated by a valid user. In affected releases, Kirby allowed page drafts to be rendered if any valid user was authenticated, even if that user did not have access to the specific page model. Authenticated attackers with knowledge of the full path to an existing page draft could then access the rendered frontend page. This could lead to the disclosure of sensitive information, e.g. ahead of the launch of a new product or post. This issue has been fixed in versions 4.9.1 and 5.4.1.
View original CVE JSON
{
"id": "CVE-2026-44176",
"sourceIdentifier": "[email protected]",
"published": "2026-07-16T22:17:01.967",
"lastModified": "2026-10-24T20:10:00.137",
"vulnStatus": "Deferred",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "Kirby is an open-source content management system. Versions prior to 4.9.1 and 5.4.1 do not check the `pages.access` permission during page draft rendering. Permissions are defined for each user role in the user blueprint (site/blueprints/users/...). It is also possible to customize the permissions for each target model in the model blueprints (such as in site/blueprints/pages/...) using the options feature. The permissions and options together control the authorization of user actions. Kirby provides the pages.access and pages.list permissions (among others). The list permission controls whether affected models appear in lists throughout the Panel and REST API. The access permission has the same effect but also disables direct access to the affected models. This vulnerability affects the path resolver for the main CMS router. The resolver takes an input path from the requested URL and determines which model (page or file) should be rendered. When a path is requested that points to a page draft, the resolver checks that the request either contains a valid preview token or is authenticated by a valid user. In affected releases, Kirby allowed page drafts to be rendered if any valid user was authenticated, even if that user did not have access to the specific page model. Authenticated attackers with knowledge of the full path to an existing page draft could then access the rendered frontend page. This could lead to the disclosure of sensitive information, e.g. ahead of the launch of a new product or post. This issue has been fixed in versions 4.9.1 and 5.4.1."
},
{
"lang": "es",
"value": "Kirby es un sistema de gestión de contenido de código abierto. Las versiones anteriores a 4.9.1 y 5.4.1 no verifican el permiso ’pages.access’ durante la renderización de borradores de página. Los permisos se definen para cada rol de usuario en el ’blueprint’ de usuario (site/blueprints/users/...). También es posible personalizar los permisos para cada modelo de destino en los ’blueprints’ de modelo (como en site/blueprints/pages/...) utilizando la función de opciones. Los permisos y las opciones juntos controlan la autorización de las acciones del usuario. Kirby proporciona los permisos ’pages.access’ y ’pages.list’ (entre otros). El permiso ’list’ controla si los modelos afectados aparecen en listas en todo el Panel y la API REST. El permiso ’access’ tiene el mismo efecto pero también deshabilita el acceso directo a los modelos afectados. Esta vulnerabilidad afecta al resolvedor de rutas para el router principal del CMS. El resolvedor toma una ruta de entrada de la URL solicitada y determina qué modelo (página o archivo) debe ser renderizado. Cuando se solicita una ruta que apunta a un borrador de página, el resolvedor verifica que la solicitud contenga un token de vista previa válido o esté autenticada por un usuario válido. En las versiones afectadas, Kirby permitía que los borradores de página se renderizaran si cualquier usuario válido estaba autenticado, incluso si ese usuario no tenía acceso al modelo de página específico. Atacantes autenticados con conocimiento de la ruta completa a un borrador de página existente podrían entonces acceder a la página de frontend renderizada. Esto podría llevar a la divulgación de información sensible, por ejemplo, antes del lanzamiento de un nuevo producto o publicación. Este problema ha sido solucionado en las versiones 4.9.1 y 5.4.1."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "getkirby",
"product": "kirby",
"versions": [
{
"version": "< 4.9.1",
"status": "affected"
},
{
"version": ">= 5.0.0, < 5.4.1",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV40": [
{
"source": "[email protected]",
"type": "Secondary",
"cvssData": {
"version": "4.0",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N/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",
"baseScore": 6.0,
"baseSeverity": "MEDIUM",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"privilegesRequired": "LOW",
"userInteraction": "NONE",
"vulnConfidentialityImpact": "HIGH",
"vulnIntegrityImpact": "NONE",
"vulnAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"subAvailabilityImpact": "NONE",
"exploitMaturity": "NOT_DEFINED",
"confidentialityRequirement": "NOT_DEFINED",
"integrityRequirement": "NOT_DEFINED",
"availabilityRequirement": "NOT_DEFINED",
"modifiedAttackVector": "NOT_DEFINED",
"modifiedAttackComplexity": "NOT_DEFINED",
"modifiedAttackRequirements": "NOT_DEFINED",
"modifiedPrivilegesRequired": "NOT_DEFINED",
"modifiedUserInteraction": "NOT_DEFINED",
"modifiedVulnConfidentialityImpact": "NOT_DEFINED",
"modifiedVulnIntegrityImpact": "NOT_DEFINED",
"modifiedVulnAvailabilityImpact": "NOT_DEFINED",
"modifiedSubConfidentialityImpact": "NOT_DEFINED",
"modifiedSubIntegrityImpact": "NOT_DEFINED",
"modifiedSubAvailabilityImpact": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"valueDensity": "NOT_DEFINED",
"vulnerabilityResponseEffort": "NOT_DEFINED",
"providerUrgency": "NOT_DEFINED"
}
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-07-17T11:10:56.143346Z",
"id": "CVE-2026-44176",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "[email protected]",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-862"
}
]
}
],
"references": [
{
"url": "https://github.com/getkirby/kirby/releases/tag/5.4.1",
"source": "[email protected]"
},
{
"url": "https://github.com/getkirby/kirby/security/advisories/GHSA-2xw4-v2wx-hqq9",
"source": "[email protected]"
}
]
}