CVE-2026-28685
Received Received - Intake
Insecure Direct Object Reference in Kimai Invoice API Allows Data Exposure

Publication date: 2026-03-06

Last updated on: 2026-03-10

Assigner: GitHub, Inc.

Description
Kimai is a web-based multi-user time-tracking application. Prior to version 2.51.0, "GET /api/invoices/{id}" only checks the role-based view_invoice permission but does not verify the requesting user has access to the invoice's customer. Any user with ROLE_TEAMLEAD (which grants view_invoice) can read all invoices in the system, including those belonging to customers assigned to other teams. This issue has been patched in version 2.51.0.
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-03-06
Last Modified
2026-03-10
Generated
2026-05-07
AI Q&A
2026-03-06
EPSS Evaluated
2026-05-05
NVD
EUVD
Affected Vendors & Products
Showing 1 associated CPE
Vendor Product Version / Range
kimai kimai to 2.51.0 (exc)
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-285 The product does not perform or incorrectly performs an authorization check when an actor attempts to access a resource or perform an action.
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?

[{'type': 'paragraph', 'content': 'CVE-2026-28685 is an Insecure Direct Object Reference (IDOR) vulnerability in the Kimai time-tracking software affecting the API invoice endpoint prior to version 2.51.0.'}, {'type': 'paragraph', 'content': "The vulnerability occurs because the GET /api/invoices/{id} endpoint only checks if the user has the role-based permission 'view_invoice' (typically granted to users with ROLE_TEAMLEAD) but does not verify whether the user has access rights to the customer associated with the invoice."}, {'type': 'paragraph', 'content': 'As a result, any user with the ROLE_TEAMLEAD role can access invoices belonging to customers assigned to other teams, bypassing intended data isolation and exposing sensitive invoice data.'}] [2]


How can this vulnerability impact me? :

This vulnerability allows unauthorized users with the ROLE_TEAMLEAD role to access all invoices in the system, including those of customers assigned to other teams.

The impact includes unauthorized disclosure of sensitive financial information such as invoice numbers, total amounts, currencies, customer details, and payment terms.

This breaks data isolation in multi-team deployments, potentially leading to confidentiality breaches and exposure of confidential business data.


How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:

I don't know


How can this vulnerability be detected on my network or system? Can you suggest some commands?

[{'type': 'paragraph', 'content': 'This vulnerability can be detected by testing whether users with the ROLE_TEAMLEAD role can access invoices belonging to customers outside their assigned teams via the API endpoint GET /api/invoices/{id}.'}, {'type': 'paragraph', 'content': 'A practical approach is to attempt authorized GET requests to the invoice API endpoint using credentials of a user with ROLE_TEAMLEAD and verify if invoices from other customers are accessible.'}, {'type': 'paragraph', 'content': 'For example, using curl to test access:'}, {'type': 'list_item', 'content': 'curl -H "Authorization: Bearer <token>" https://<kimai-server>/api/invoices/<invoice_id>'}, {'type': 'paragraph', 'content': "If the response returns invoice data for customers not assigned to the user's team, the system is vulnerable."}, {'type': 'paragraph', 'content': 'Additionally, reviewing API logs for unexpected access patterns where team leads access invoices outside their teams can help detect exploitation.'}] [2]


What immediate steps should I take to mitigate this vulnerability?

[{'type': 'paragraph', 'content': 'The immediate mitigation is to upgrade Kimai to version 2.51.0 or later, where the vulnerability has been patched by enforcing customer permission checks on invoice API endpoints.'}, {'type': 'paragraph', 'content': 'If upgrading is not immediately possible, restrict access to the API endpoints for users with the ROLE_TEAMLEAD role or implement additional access controls to ensure users cannot access invoices outside their assigned customers.'}, {'type': 'paragraph', 'content': 'Review and apply the patch that adds permission checks in the InvoiceController API methods, specifically adding the Symfony security attribute to verify customer access.'}, {'type': 'list_item', 'content': 'Add the annotation #[IsGranted(new Expression("is_granted(\'access\', subject.getCustomer())"), \'invoice\')] to the API invoice controller methods.'}, {'type': 'paragraph', 'content': 'Monitor and audit API access logs for unauthorized invoice access attempts.'}] [1, 2, 3]


Ask Our AI Assistant
Need more information? Ask your question to get an AI reply (Powered by our expertise)
0/70
EPSS Chart