<?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://db.gcve.eu</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>Sat, 03 Oct 2026 11:51:42 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-29794</title>
      <link>https://db.gcve.eu/vuln/fkie_cve-2026-29794</link>
      <description>&lt;p&gt;Vikunja is an open-source self-hosted task management platform. Starting in version 0.8 and prior to version 2.2.0, unauthenticated users are able to bypass the application&amp;#39;s built-in rate-limits by spoofing the `X-Forwarded-For` or `X-Real-IP` headers due to the rate-limit relying on the value of `(echo.Context).RealIP`. Unauthenticated users can abuse endpoints available to them for different potential impacts. The immediate concern would be brute-forcing usernames or specific accounts&amp;#39; passwords. This bypass allows unlimited requests against unauthenticated endpoints. Version 2.2.0 patches the issue.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Vikunja is an open-source self-hosted task management platform. Starting in version 0.8 and prior to version 2.2.0, unauthenticated users are able to bypass the application&amp;#39;s built-in rate-limits by spoofing the `X-Forwarded-For` or `X-Real-IP` headers due to the rate-limit relying on the value of `(echo.Context).RealIP`. Unauthenticated users can abuse endpoints available to them for different potential impacts. The immediate concern would be brute-forcing usernames or specific accounts&amp;#39; passwords. This bypass allows unlimited requests against unauthenticated endpoints. Version 2.2.0 patches the issue.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/fkie_cve-2026-29794</guid>
    </item>
    <item>
      <title>GHSA-m547-hp4w-j6jx — Vikunja has a Rate-Limit Bypass for Unauthenticated Users via Spoofed Headers</title>
      <link>https://db.gcve.eu/vuln/ghsa-m547-hp4w-j6jx</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Go: code.vikunja.io/api&lt;/p&gt;
&lt;p&gt;### Summary
Unauthenticated users are able to bypass the application&amp;#39;s built-in rate-limits by spoofing the `X-Forwarded-For` or `X-Real-IP` headers due to the rate-limit relying on the value of `(echo.Context).RealIP`.&lt;/p&gt;
&lt;p&gt;### Details
In the first file below, the rate-limit for unauthenticated users can be observed being populated with the `ip` value. In the second file, it shows it using the `c.RealIP()` function for the `ip` case. Due to this, the rate-limit will rely on the value of one of the two mentioned headers (`X-Forwarded-For` or `X-Real-IP`). These can be spoofed by users client-side in order to completely bypass any unauthenticated rate-limits in place.&lt;/p&gt;
&lt;p&gt;Some reverse proxies like Traefik will overwrite this value by default, but others will not, leaving any deployment that either isn&amp;#39;t using a reserve proxy that specifically overwrites the header&amp;#39;s value or isn&amp;#39;t using a reverse proxy vulnerable.&lt;/p&gt;
&lt;p&gt;**File 1:** pkg\routes\routes.go:318
```go
// This is the group with no auth
	// It is its own group to be able to rate limit this based on different heuristics
	n := a.Group(&amp;#34;&amp;#34;)
	setupRateLimit(n, &amp;#34;ip&amp;#34;)&lt;/p&gt;
&lt;p&gt;// Docs
	n.GET(&amp;#34;/docs.json&amp;#34;, apiv1.DocsJSON)
	n.GET(&amp;#34;/docs&amp;#34;, apiv1.RedocUI)&lt;/p&gt;
&lt;p&gt;// Prometheus endpoint
	setupMetrics(n)&lt;/p&gt;
&lt;p&gt;// Separate route for unauthenticated routes to enable rate limits for it
	ur := a.Group(&amp;#34;&amp;#34;)
	rate := limiter.Rate{
		Period: 60 * time.Second,
		Limit:  config.RateLimitNoAuthRoutesLimit.GetInt64(),
	}
	rateLimiter := createRateLimiter(rate)
	ur.Use…&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
Unauthenticated users are able to bypass the application&amp;#39;s built-in rate-limits by spoofing the `X-Forwarded-For` or `X-Real-IP` headers due to the rate-limit relying on the value of `(echo.Context).RealIP`.&lt;/p&gt;
&lt;p&gt;### Details
In the first file below, the rate-limit for unauthenticated users can be observed being populated with the `ip` value. In the second file, it shows it using the `c.RealIP()` function for the `ip` case. Due to this, the rate-limit will rely on the value of one of the two mentioned headers (`X-Forwarded-For` or `X-Real-IP`). These can be spoofed by users client-side in order to completely bypass any unauthenticated rate-limits in place.&lt;/p&gt;
&lt;p&gt;Some reverse proxies like Traefik will overwrite this value by default, but others will not, leaving any deployment that either isn&amp;#39;t using a reserve proxy that specifically overwrites the header&amp;#39;s value or isn&amp;#39;t using a reverse proxy vulnerable.&lt;/p&gt;
&lt;p&gt;**File 1:** pkg\routes\routes.go:318
```go
// This is the group with no auth
	// It is its own group to be able to rate limit this based on different heuristics
	n := a.Group(&amp;#34;&amp;#34;)
	setupRateLimit(n, &amp;#34;ip&amp;#34;)&lt;/p&gt;
&lt;p&gt;// Docs
	n.GET(&amp;#34;/docs.json&amp;#34;, apiv1.DocsJSON)
	n.GET(&amp;#34;/docs&amp;#34;, apiv1.RedocUI)&lt;/p&gt;
&lt;p&gt;// Prometheus endpoint
	setupMetrics(n)&lt;/p&gt;
&lt;p&gt;// Separate route for unauthenticated routes to enable rate limits for it
	ur := a.Group(&amp;#34;&amp;#34;)
	rate := limiter.Rate{
		Period: 60 * time.Second,
		Limit:  config.RateLimitNoAuthRoutesLimit.GetInt64(),
	}
	rateLimiter := createRateLimiter(rate)
	ur.Use…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-m547-hp4w-j6jx</guid>
    </item>
  </channel>
</rss>
