Security advisories
This document describes how reported security vulnerabilities are handled for Kimai.
We take every security report seriously and act upon it as soon as possible. If you’re a security researcher, please read our Guidelines about testing and reporting new vulnerabilities before submitting a report.
Upon receiving a new security report, our process looks like this:
- We review the report and, if needed, contact the reporter with follow-up questions
- We reproduce and verify the reported issue
- We write regression tests to prevent the issue from reoccurring
- We fix the vulnerability and create a new Kimai release (noting that security fixes are included)
- We update the Kimai-Cloud environment
- We write an advisory for our website that explains the issue in plain language (see the list of published advisories below)
- We request a CVE ID, if the issue qualifies for one
- At least two weeks after the patched version has been released, we publish the advisory on our website and on GitHub
Severity levels
We rate security issues using four severity levels: Low, Medium, High, and Critical.
Our GitHub advisories may include CVSS scores for reference, but we do not rely on CVSS as the primary basis for grading vulnerabilities. In our view, CVSS does not adequately capture all the factors and context involved in assessing real-world impact.
A rough guideline for how we classify security issues:
Low: read access to data that should not be accessibleMedium: write access to data that should not be accessible (e.g. XSS, CSRF)High: permission escalation to admin level, escaping sandboxes, reading filesystem contentsCritical: system manipulation, passing authentication flows
We take additional details into account beyond this list. Each advisory is rated as a whole, and we particularly consider the permission level required for exploitation.
For example: any issue that requires direct filesystem access or a System-Admin account to exploit is unlikely to be
rated higher than Medium, as these preconditions significantly limit the realistic attack surface:
- The System-Admin role is the Kimai equivalent of a root account and can easily delete all data in the system.
- Users who already have filesystem access to the server have a variety of options to manipulate the system and do not need Kimai for that.
Each of the following pre-conditions will lower the severity level:
- requires filesystem access of some kind (e.g. hosting a HTML page on the same subdomain for an automated
POSTrequest) - the assumption of the mysterious legacy browser that does not support the
samesitecookie settinglax - requirement that the attacker is a System-Admin
Published vulnerabilities
You can subscribe to all advisories via Atom RSS Feed.
- 2026-06-09: Specially Crafted Search Terms Could Disrupt Kimai’s Search Feature
- 2026-06-03: ⚠️ API access possible without completing two-factor authentication
- 2026-05-22: Invoice PDF export could trigger requests to internal network services
- 2026-05-22: CSRF attack allowed tricking logged-in users into creating teams and changing access
- 2026-05-22: Malicious websites could stop or restart your time entries while you’re logged in
- 2026-05-22: Team leads could create and edit global export templates
- 2026-05-22: Password reset links stayed valid after the password was changed
- 2026-05-22: 🚨 Docker installations using the default secret key could be taken over by attackers
- 2026-05-20: Team leads could add users and activities to their team that were outside their allowed scope
- 2026-05-19: Users could edit rates of projects, customers, or activities outside their access
- 2026-05-19: Users could keep logging time on projects after their access was revoked
- 2026-05-19: Users could create activities and projects outside their access scope
- 2026-05-18: Signed-in users could tamper with other users’ favorite timesheet bookmarks
- 2026-05-05: Arbitrary file read in invoice PDF renderer (admin)
- 2026-04-28: Timesheets could be assigned to off-limits projects through the API
- 2026-04-28: Team leads could read other users’ timesheets through the API
- 2026-04-27: Twig function config() leaks secrets via invoice/export templates
- 2026-04-27: Missing Voter Check Allows Cross-Team Timesheet Manipulation
- 2026-04-26: Formula Injection via tag names in XLSX export
- 2026-04-21: Team API Missing Object-Level Authorization
- 2026-04-16: Username enumeration via timing, using deprecated API authentication
- 2026-04-14: User Preferences API allows standard users to modify: hourly_rate, internal_rate
- 2026-04-14: ⚠️ Stored XSS via incomplete HTML attribute escaping in Team-Member widget
- 2026-04-11: API password hash leakage via invoice Twig template
- 2026-04-11: Open-redirect via unvalidated RelayState in SAML ACS handler
- 2026-03-04: API invoice endpoint missing customer-level access control (IDOR)
- 2026-01-18: Authenticated server-side template injection (SSTI)
- 2024-09-17: XXE leading to local file read
- 2024-03-27: API returns timesheet entries a user shouldn’t be authorized to view
- 2023-10-27: ⚠️ Authenticated SSTI to RCE by uploading a malicious twig file