Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/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
Network-reachable web route (AV:N), trivial project ID enumeration (AC:L), requires authenticated low-privilege session (PR:L), integrity-only impact limited to data injection (I:L), no confidentiality or availability impact.
Primary rating from Vendor (https://github.com/kimai/kimai).
CVSS VectorVendor: https://github.com/kimai/kimai
Lifecycle Timeline
3DescriptionCVE.org
Summary
Kimai 2.56.0 contains an authenticated improper authorization vulnerability in the preset-project activity creation flow. A user with the generic create_activity permission, but without access to a target project, can still create a new Activity under that unauthorized project by visiting the preset project creation route directly.
This is a persistent cross-project business-object creation issue. The attacker does not need permission to view or edit the target project and only needs to know a valid project.id.
Details
The issue affects the activity creation entry point that accepts a preset project identifier:
GET/POST /en/admin/activity/create/{project}GET/POST /en/admin/project/create/{customer}
In src/Controller/ActivityController.php, the controller checks only the global capability to create activities and does not verify whether the current user is allowed to create an activity under the supplied Project object.
The form and repository path also preserve the preset project instead of rejecting it when the user lacks access. Because the preset project is merged into the candidate set, the final save operation can persist a new Activity under a project that is outside the attacker's authorized project scope.
The same logic applies to the src/Controller/ProjectController.php.
*A PoC was provided, but removed for security reasons.*
Impact
This vulnerability allows an authenticated user to inject new child business objects into projects outside their authorized scope. An attacker can pollute another team's project configuration, influence later timesheet selection and rate inheritance, and create conditions for downstream business abuse if other users start using the injected activity.
Solution
- In
ActivityControllerwe now validate if the project can be edited with[IsGranted('edit', 'project')] - In
ProjectControllerwe now validate if if the customer can be edited with[IsGranted('edit', 'customer')]
See https://www.kimai.org/en/security/ghsa-3q6q-26vg-v97x
AnalysisAI
Improper object-level authorization in Kimai 2.56.0 allows any authenticated user holding the generic create_activity permission to inject Activity records into projects outside their authorized scope by directly invoking the preset-project creation routes with an arbitrary project ID. The controllers in ActivityController.php and ProjectController.php validate only the global capability (can the user create activities at all?) without performing a secondary check that the user also has edit rights on the specific target project. No public exploit exists at time of analysis, though a PoC was privately shared with the vendor and subsequently removed; the vendor has released a fix in version 2.57.0.
Technical ContextAI
Kimai is an open-source PHP time-tracking web application distributed via Composer (composer/kimai/kimai). The vulnerability is rooted in CWE-639 (Authorization Bypass Through User-Controlled Key): the {project} and {customer} path parameters in routes /en/admin/activity/create/{project} and /en/admin/project/create/{customer} are user-supplied identifiers that the application resolves to ORM entities without verifying the requesting user's object-level access. The Symfony-based authorization layer uses attribute-based IsGranted checks, but the original code omitted the per-object [IsGranted('edit', 'project')] guard, leaving only the global create_activity capability check. Because the resolved project entity is merged into the candidate set before the final save, the persistence layer writes the new Activity to the unauthorized project without further gating. The same structural flaw existed in the ProjectController path, allowing unauthorized customer-scoped project creation.
RemediationAI
Upgrade Kimai to version 2.57.0 or later, which introduces [IsGranted('edit', 'project')] in ActivityController and [IsGranted('edit', 'customer')] in ProjectController to enforce object-level authorization checks on the preset path parameters. Full advisory details are at https://www.kimai.org/en/security/ghsa-3q6q-26vg-v97x. If an immediate upgrade is not possible, restrict access to the affected routes (/en/admin/activity/create/* and /en/admin/project/create/*) at the web server or reverse-proxy level to only users who have verified admin roles, accepting the trade-off of blocking legitimate low-privilege activity creation. Alternatively, revoke the create_activity permission from any user who should not have cross-project write access until the patch is applied; this limits legitimate functionality but eliminates the attack surface.
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 technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-78400
GHSA-3q6q-26vg-v97x