<?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>Tue, 06 Oct 2026 08:41:51 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-291417</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-291417</link>
      <description>EUVD-2026-291417</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-291417</guid>
    </item>
    <item>
      <title>fkie_cve-2026-40103</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-40103</link>
      <description>&lt;p&gt;Vikunja is an open-source self-hosted task management platform. Prior to 2.3.0, Vikunja&amp;#39;s scoped API token enforcement for custom project background routes is method-confused. A token with only projects.background can successfully delete a project background, while a token with only projects.background_delete is rejected. This is a scoped-token authorization bypass. This vulnerability is fixed in 2.3.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Vikunja is an open-source self-hosted task management platform. Prior to 2.3.0, Vikunja&amp;#39;s scoped API token enforcement for custom project background routes is method-confused. A token with only projects.background can successfully delete a project background, while a token with only projects.background_delete is rejected. This is a scoped-token authorization bypass. This vulnerability is fixed in 2.3.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-40103</guid>
    </item>
    <item>
      <title>GHSA-v479-vf79-mg83 — Vikunja: Scoped API tokens with projects.background permission can delete project backgrounds</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-v479-vf79-mg83</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: code.vikunja.io/api&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;Vikunja&amp;#39;s scoped API token enforcement for custom project background routes is method-confused. A token with only `projects.background` can successfully delete a project background, while a token with only `projects.background_delete` is rejected.&lt;/p&gt;
&lt;p&gt;This is a scoped-token authorization bypass.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;I verified this locally on commit `c5450fb55f5192508638cbb3a6956438452a712e`.&lt;/p&gt;
&lt;p&gt;Relevant code paths:
* `pkg/models/api_routes.go`
* `pkg/routes/routes.go`
* `pkg/modules/background/handler/background.go`&lt;/p&gt;
&lt;p&gt;Route registration exposes separate permissions for the same path:
* `GET /api/v1/projects/:project/background` -&amp;gt; `projects.background`
* `DELETE /api/v1/projects/:project/background` -&amp;gt; `projects.background_delete`&lt;/p&gt;
&lt;p&gt;At enforcement time, `CanDoAPIRoute()` falls back to the parent group and reconstructs the child permission from the path segments only. For the DELETE request, that becomes `background`, so the matcher accepts any token containing `projects.background` without re-checking the HTTP method or matching the stored route detail.&lt;/p&gt;
&lt;p&gt;This matters because `RemoveProjectBackground()` is a real destructive operation:
* It checks project update rights.
* It deletes the background file if present.
* It clears the project&amp;#39;s `BackgroundFileID`.&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;1. Log in as a user who can update a project that already has a background.
2. Create an API token with only:
   `{&amp;#34;projects&amp;#34;:[&amp;#34;background&amp;#34;]}`
3. Send:
   `DELETE /api/v1/projects/&amp;lt;project_id&amp;gt;/background`
   `A…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: code.vikunja.io/api&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;Vikunja&amp;#39;s scoped API token enforcement for custom project background routes is method-confused. A token with only `projects.background` can successfully delete a project background, while a token with only `projects.background_delete` is rejected.&lt;/p&gt;
&lt;p&gt;This is a scoped-token authorization bypass.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;I verified this locally on commit `c5450fb55f5192508638cbb3a6956438452a712e`.&lt;/p&gt;
&lt;p&gt;Relevant code paths:
* `pkg/models/api_routes.go`
* `pkg/routes/routes.go`
* `pkg/modules/background/handler/background.go`&lt;/p&gt;
&lt;p&gt;Route registration exposes separate permissions for the same path:
* `GET /api/v1/projects/:project/background` -&amp;gt; `projects.background`
* `DELETE /api/v1/projects/:project/background` -&amp;gt; `projects.background_delete`&lt;/p&gt;
&lt;p&gt;At enforcement time, `CanDoAPIRoute()` falls back to the parent group and reconstructs the child permission from the path segments only. For the DELETE request, that becomes `background`, so the matcher accepts any token containing `projects.background` without re-checking the HTTP method or matching the stored route detail.&lt;/p&gt;
&lt;p&gt;This matters because `RemoveProjectBackground()` is a real destructive operation:
* It checks project update rights.
* It deletes the background file if present.
* It clears the project&amp;#39;s `BackgroundFileID`.&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;1. Log in as a user who can update a project that already has a background.
2. Create an API token with only:
   `{&amp;#34;projects&amp;#34;:[&amp;#34;background&amp;#34;]}`
3. Send:
   `DELETE /api/v1/projects/&amp;lt;project_id&amp;gt;/background`
   `A…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-v479-vf79-mg83</guid>
    </item>
  </channel>
</rss>
