Missing Voter Check Allows Cross-Team Timesheet Manipulation
Affected versions
- Affected versions: <= 2.55.0
- Patched version: 2.56.0
- Advisory published: 27 Apr 2026
Severity
Severity: Medium
We have not requested an official CVE ID for this security advisory.
Vulnerability
Kimai’s *_other_timesheet permissions grant global access by design. Any user holding them — typically ROLE_TEAMLEAD — can read, modify, and permanently delete timesheets belonging to any other user in the system, regardless of team membership.
This is documented permission behavior rather than a regression, but the cross-team data destruction (deleted timesheets) and tampering (for example, changed timesheet durations) it allows are addressed by team-scoped enforcement in 2.56.0.
Info
A user holding the relevant permissions — typically ROLE_TEAMLEAD — can:
- Permanently delete timesheets belonging to any user system-wide (permission
delete_other_timesheet) - Silently alter timesheet descriptions, hours, and billing flags (permission
edit_other_timesheet) - Enumerate timesheet data via guessed IDs (permission
view_other_timesheet)
Regular ROLE_USER accounts are correctly restricted; the issue is specific to the listed permissions receiving global scope instead of team-scoped access.
Edits and deletions remain visible in the Kimai audit logs.
Why this is not eligible for a CVE
The behavior described matches the documented permission model. Per the Kimai documentation, the relevant permissions granted to ROLE_TEAMLEAD are:
edit_other_timesheet— Edit existing records of other usersdelete_other_timesheet— Delete existing records of other users
These permissions were global by design, not team-scoped. The UI surfaces only the teamlead’s own team timesheets, but the API has historically honored these permissions as documented: a role holding *_other_timesheet can act on any other user’s timesheet.
A long-standing source-code comment marking team-scoped enforcement as a planned enhancement reflects this accurately — the team check was a future improvement, not a security control that existed and failed.
We acknowledge that this behavior might not be expected, so while we treat it as a feature request for team-scoped permission enforcement and not a vulnerability, we still track it as having security implications.
Solution
Team-scoped timesheet permission checks were added. Operators of Kimai <= 2.55.0 who need stricter isolation between teams should not grant ROLE_TEAMLEAD to users who must not act on other teams’ timesheets.
Users should update to 2.56.0 or newer.
Credits
- Reported by: nullvector1
- Patched by: kevinpapst
First reported in GitHub advisory: GHSA-9g2q-w3w2-vf7q
Kimai