<?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>Mon, 05 Oct 2026 16:17:11 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-291213</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-291213</link>
      <description>EUVD-2026-291213</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-291213</guid>
    </item>
    <item>
      <title>fkie_cve-2026-35600</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-35600</link>
      <description>&lt;p&gt;Vikunja is an open-source self-hosted task management platform. Prior to 2.3.0, task titles are embedded directly into Markdown link syntax in overdue email notifications without escaping Markdown special characters. When rendered by goldmark and sanitized by bluemonday (which allows &amp;lt;a&amp;gt; and &amp;lt;img&amp;gt; tags), injected Markdown constructs produce phishing links and tracking pixels in legitimate notification emails. 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, task titles are embedded directly into Markdown link syntax in overdue email notifications without escaping Markdown special characters. When rendered by goldmark and sanitized by bluemonday (which allows &amp;lt;a&amp;gt; and &amp;lt;img&amp;gt; tags), injected Markdown constructs produce phishing links and tracking pixels in legitimate notification emails. This vulnerability is fixed in 2.3.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-35600</guid>
    </item>
    <item>
      <title>GHSA-45q4-x4r9-8fqj — Vikunja has HTML Injection via Task Titles in Overdue Email Notifications</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-45q4-x4r9-8fqj</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;Task titles are embedded directly into Markdown link syntax in overdue email notifications without escaping Markdown special characters. When rendered by goldmark and sanitized by bluemonday (which allows `&amp;lt;a&amp;gt;` and `&amp;lt;img&amp;gt;` tags), injected Markdown constructs produce phishing links and tracking pixels in legitimate notification emails.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;The overdue task notification at `pkg/models/notifications.go:360` constructs a Markdown list entry:&lt;/p&gt;
&lt;p&gt;```go
overdueLine += `* [` + task.Title + `](` + config.ServicePublicURL.GetString() + &amp;#34;tasks/&amp;#34; + strconv.FormatInt(task.ID, 10) + `) ...`
```&lt;/p&gt;
&lt;p&gt;The task title is placed inside Markdown link syntax `[TITLE](URL)`. A title containing `]` and `[` breaks the link structure. The assembled Markdown is converted to HTML by goldmark at `pkg/notifications/mail_render.go:214`, then sanitized by bluemonday&amp;#39;s UGCPolicy. Since UGCPolicy intentionally allows `&amp;lt;a href&amp;gt;` and `&amp;lt;img src&amp;gt;` with http/https URLs, the injected links and images survive sanitization and reach the email recipient.&lt;/p&gt;
&lt;p&gt;The same pattern affects multiple notification types at `notifications.go` lines 72, 176, 227, and 318.&lt;/p&gt;
&lt;p&gt;## Proof of Concept&lt;/p&gt;
&lt;p&gt;Tested on Vikunja v2.2.2 with SMTP enabled (MailHog as sink).&lt;/p&gt;
&lt;p&gt;```python
import requests&lt;/p&gt;
&lt;p&gt;TARGET = &amp;#34;http://localhost:3456&amp;#34;
API = f&amp;#34;{TARGET}/api/v1&amp;#34;&lt;/p&gt;
&lt;p&gt;token = requests.post(f&amp;#34;{API}/login&amp;#34;,
    json={&amp;#34;username&amp;#34;: &amp;#34;alice&amp;#34;, &amp;#34;password&amp;#34;: &amp;#34;Alice1234!&amp;#34;}).json()[&amp;#34;token&amp;#34;]
h = {&amp;#34;Authorization&amp;#34;: f&amp;#34;Bearer {token}&amp;#34;, &amp;#34;Content-Type&amp;#34;: &amp;#34;applicati…&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;Task titles are embedded directly into Markdown link syntax in overdue email notifications without escaping Markdown special characters. When rendered by goldmark and sanitized by bluemonday (which allows `&amp;lt;a&amp;gt;` and `&amp;lt;img&amp;gt;` tags), injected Markdown constructs produce phishing links and tracking pixels in legitimate notification emails.&lt;/p&gt;
&lt;p&gt;## Details&lt;/p&gt;
&lt;p&gt;The overdue task notification at `pkg/models/notifications.go:360` constructs a Markdown list entry:&lt;/p&gt;
&lt;p&gt;```go
overdueLine += `* [` + task.Title + `](` + config.ServicePublicURL.GetString() + &amp;#34;tasks/&amp;#34; + strconv.FormatInt(task.ID, 10) + `) ...`
```&lt;/p&gt;
&lt;p&gt;The task title is placed inside Markdown link syntax `[TITLE](URL)`. A title containing `]` and `[` breaks the link structure. The assembled Markdown is converted to HTML by goldmark at `pkg/notifications/mail_render.go:214`, then sanitized by bluemonday&amp;#39;s UGCPolicy. Since UGCPolicy intentionally allows `&amp;lt;a href&amp;gt;` and `&amp;lt;img src&amp;gt;` with http/https URLs, the injected links and images survive sanitization and reach the email recipient.&lt;/p&gt;
&lt;p&gt;The same pattern affects multiple notification types at `notifications.go` lines 72, 176, 227, and 318.&lt;/p&gt;
&lt;p&gt;## Proof of Concept&lt;/p&gt;
&lt;p&gt;Tested on Vikunja v2.2.2 with SMTP enabled (MailHog as sink).&lt;/p&gt;
&lt;p&gt;```python
import requests&lt;/p&gt;
&lt;p&gt;TARGET = &amp;#34;http://localhost:3456&amp;#34;
API = f&amp;#34;{TARGET}/api/v1&amp;#34;&lt;/p&gt;
&lt;p&gt;token = requests.post(f&amp;#34;{API}/login&amp;#34;,
    json={&amp;#34;username&amp;#34;: &amp;#34;alice&amp;#34;, &amp;#34;password&amp;#34;: &amp;#34;Alice1234!&amp;#34;}).json()[&amp;#34;token&amp;#34;]
h = {&amp;#34;Authorization&amp;#34;: f&amp;#34;Bearer {token}&amp;#34;, &amp;#34;Content-Type&amp;#34;: &amp;#34;applicati…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-45q4-x4r9-8fqj</guid>
    </item>
  </channel>
</rss>
