CVE-2026-29794
Rate Limit Bypass via IP Spoofing in Vikunja Task Manager
Publication date: 2026-03-20
Last updated on: 2026-03-24
Assigner: GitHub, Inc.
Description
Description
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| vikunja | vikunja | From 0.8 (inc) to 2.2.0 (exc) |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-807 | The product uses a protection mechanism that relies on the existence or values of an input, but the input can be modified by an untrusted actor in a way that bypasses the protection mechanism. |
Attack-Flow Graph
AI Powered Q&A
How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:
I don't know
Can you explain this vulnerability to me?
[{'type': 'paragraph', 'content': "This vulnerability affects Vikunja, an open-source self-hosted task management platform, in versions starting from 0.8 up to but not including 2.2.0. It allows unauthenticated users to bypass the application's built-in rate limits by spoofing the HTTP headers `X-Forwarded-For` or `X-Real-IP`. The rate-limiting mechanism relies on the IP address obtained from these headers via the Echo framework's `RealIP()` function. Because these headers can be manipulated by attackers, they can send unlimited requests by changing the spoofed IP address, effectively circumventing rate limits."}, {'type': 'paragraph', 'content': 'This flaw enables attackers to abuse unauthenticated endpoints, such as performing brute-force attacks on usernames or passwords without restriction. The issue was fixed in Vikunja version 2.2.0 by introducing configuration options to control how client IP addresses are extracted and to trust only certain proxies, preventing header spoofing from bypassing rate limits.'}] [1, 2]
How can this vulnerability impact me? :
The primary impact of this vulnerability is that unauthenticated attackers can bypass rate limits and send unlimited requests to unauthenticated endpoints of the Vikunja application.
- Attackers can perform brute-force attacks on usernames or passwords without being blocked by rate limiting.
- This can lead to account compromise if weak credentials are used.
- The vulnerability has a moderate severity with a CVSS v3 base score of 5.3, indicating a network attack vector with low complexity and no required privileges.
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 monitoring the rate-limit headers on unauthenticated endpoints, such as the login endpoint `/api/v1/login`. If the rate-limit counter resets when the `X-Forwarded-For` or `X-Real-IP` headers are changed between requests, it indicates that the rate limiting is relying on these headers and can be bypassed.'}, {'type': 'paragraph', 'content': 'A practical approach is to use a web proxy tool (e.g., Burp Suite) to send repeated requests to the vulnerable endpoints while modifying the `X-Forwarded-For` or `X-Real-IP` headers to different spoofed IP addresses. Observing if the server continues to allow requests beyond the expected rate limit confirms the vulnerability.'}, {'type': 'paragraph', 'content': 'Example commands using curl to test the vulnerability by spoofing headers:'}, {'type': 'list_item', 'content': 'curl -H "X-Forwarded-For: 1.2.3.4" https://your-vikunja-instance/api/v1/login'}, {'type': 'list_item', 'content': 'curl -H "X-Forwarded-For: 5.6.7.8" https://your-vikunja-instance/api/v1/login'}, {'type': 'paragraph', 'content': 'If the server allows unlimited requests by changing these headers, the vulnerability is present.'}] [2]
What immediate steps should I take to mitigate this vulnerability?
The immediate mitigation is to upgrade Vikunja to version 2.2.0 or later, where this vulnerability is patched.
The patch introduces two new configuration options:
- `service.ipextractionmethod` - controls how the client IP address is determined.
- `service.trustedproxies` - defines which proxies are trusted to set the client IP, preventing spoofing from untrusted sources.
By configuring these options properly, you ensure that only trusted proxies can influence the perceived client IP address, preventing attackers from bypassing rate limits by spoofing headers.
If upgrading immediately is not possible, deploying a reverse proxy (such as Traefik) that overwrites or strips the `X-Forwarded-For` and `X-Real-IP` headers can mitigate the issue temporarily.