<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://cve.radiocsirt.org</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Fri, 09 Oct 2026 11:01:08 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-275047</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-275047</link>
      <description>EUVD-2026-275047</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-275047</guid>
    </item>
    <item>
      <title>fkie_cve-2026-28685</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-28685</link>
      <description>&lt;p&gt;Kimai is a web-based multi-user time-tracking application. Prior to version 2.51.0, &amp;#34;GET /api/invoices/{id}&amp;#34; only checks the role-based view_invoice permission but does not verify the requesting user has access to the invoice&amp;#39;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.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Kimai is a web-based multi-user time-tracking application. Prior to version 2.51.0, &amp;#34;GET /api/invoices/{id}&amp;#34; only checks the role-based view_invoice permission but does not verify the requesting user has access to the invoice&amp;#39;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.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-28685</guid>
    </item>
    <item>
      <title>GHSA-v33r-r6h2-8wr7 — Kimai's API invoice endpoint missing customer-level access control (IDOR)</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-v33r-r6h2-8wr7</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: kimai/kimai&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;`GET /api/invoices/{id}` only checks the role-based `view_invoice` permission but does not verify the requesting user has `access` to the invoice&amp;#39;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.&lt;/p&gt;
&lt;p&gt;## Affected Code&lt;/p&gt;
&lt;p&gt;`src/API/InvoiceController.php` line 92-101:&lt;/p&gt;
&lt;p&gt;```php
#[IsGranted(&amp;#39;view_invoice&amp;#39;)]           // Role check only, no customer access check
#[Route(methods: [&amp;#39;GET&amp;#39;], path: &amp;#39;/{id}&amp;#39;, name: &amp;#39;get_invoice&amp;#39;, requirements: [&amp;#39;id&amp;#39; =&amp;gt; &amp;#39;\d+&amp;#39;])]
public function getAction(Invoice $invoice): Response
{
    $view = new View($invoice, 200);
    $view-&amp;gt;getContext()-&amp;gt;setGroups(self::GROUPS_ENTITY);
    return $this-&amp;gt;viewHandler-&amp;gt;handle($view);  // Returns ANY invoice by ID
}
```&lt;/p&gt;
&lt;p&gt;The web controller (`src/Controller/InvoiceController.php` line 304-307) correctly checks customer access:&lt;/p&gt;
&lt;p&gt;```php
#[IsGranted(&amp;#39;view_invoice&amp;#39;)]
#[IsGranted(new Expression(&amp;#34;is_granted(&amp;#39;access&amp;#39;, subject.getCustomer())&amp;#34;), &amp;#39;invoice&amp;#39;)]
public function downloadAction(Invoice $invoice, ...): Response { ... }
```&lt;/p&gt;
&lt;p&gt;The `access` attribute in `CustomerVoter` (line 71-87) verifies team membership, but this check is entirely missing from the API endpoint.&lt;/p&gt;
&lt;p&gt;## PoC&lt;/p&gt;
&lt;p&gt;Tested against Kimai v2.50.0 (Docker: `kimai/kimai2:apache`).&lt;/p&gt;
&lt;p&gt;Setup:
- TeamA with CustomerA (&amp;#34;SecretCorp&amp;#34;), TeamB with CustomerB (&amp;#34;BobCorp&amp;#34;)
- Bob is a teamlead in TeamB only
- An invoice exists for SecretCorp (TeamA)&lt;/p&gt;
&lt;p&gt;```bash
#…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: kimai/kimai&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;`GET /api/invoices/{id}` only checks the role-based `view_invoice` permission but does not verify the requesting user has `access` to the invoice&amp;#39;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.&lt;/p&gt;
&lt;p&gt;## Affected Code&lt;/p&gt;
&lt;p&gt;`src/API/InvoiceController.php` line 92-101:&lt;/p&gt;
&lt;p&gt;```php
#[IsGranted(&amp;#39;view_invoice&amp;#39;)]           // Role check only, no customer access check
#[Route(methods: [&amp;#39;GET&amp;#39;], path: &amp;#39;/{id}&amp;#39;, name: &amp;#39;get_invoice&amp;#39;, requirements: [&amp;#39;id&amp;#39; =&amp;gt; &amp;#39;\d+&amp;#39;])]
public function getAction(Invoice $invoice): Response
{
    $view = new View($invoice, 200);
    $view-&amp;gt;getContext()-&amp;gt;setGroups(self::GROUPS_ENTITY);
    return $this-&amp;gt;viewHandler-&amp;gt;handle($view);  // Returns ANY invoice by ID
}
```&lt;/p&gt;
&lt;p&gt;The web controller (`src/Controller/InvoiceController.php` line 304-307) correctly checks customer access:&lt;/p&gt;
&lt;p&gt;```php
#[IsGranted(&amp;#39;view_invoice&amp;#39;)]
#[IsGranted(new Expression(&amp;#34;is_granted(&amp;#39;access&amp;#39;, subject.getCustomer())&amp;#34;), &amp;#39;invoice&amp;#39;)]
public function downloadAction(Invoice $invoice, ...): Response { ... }
```&lt;/p&gt;
&lt;p&gt;The `access` attribute in `CustomerVoter` (line 71-87) verifies team membership, but this check is entirely missing from the API endpoint.&lt;/p&gt;
&lt;p&gt;## PoC&lt;/p&gt;
&lt;p&gt;Tested against Kimai v2.50.0 (Docker: `kimai/kimai2:apache`).&lt;/p&gt;
&lt;p&gt;Setup:
- TeamA with CustomerA (&amp;#34;SecretCorp&amp;#34;), TeamB with CustomerB (&amp;#34;BobCorp&amp;#34;)
- Bob is a teamlead in TeamB only
- An invoice exists for SecretCorp (TeamA)&lt;/p&gt;
&lt;p&gt;```bash
#…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-v33r-r6h2-8wr7</guid>
    </item>
  </channel>
</rss>
