CVE-2025-52576
BaseFortify
Publication date: 2025-06-25
Last updated on: 2025-08-22
Assigner: GitHub, Inc.
Description
Description
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| kanboard | kanboard | to 1.2.46 (exc) |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-203 | The product behaves differently or sends different responses under different circumstances in a way that is observable to an unauthorized actor, which exposes security-relevant information about the state of the product, such as whether a particular operation was successful or not. |
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?
This vulnerability in Kanboard prior to version 1.2.46 allows attackers to enumerate valid usernames and bypass IP-based brute-force protections by exploiting how the login system handles CAPTCHA challenges and client IP address validation. Specifically, the login form only triggered CAPTCHA challenges for existing usernames after failed attempts, enabling attackers to detect valid usernames by observing CAPTCHA presence. Additionally, Kanboard trusts certain HTTP headers without validating them, allowing attackers to spoof IP addresses and evade IP-based rate limiting or blocking mechanisms like Fail2Ban. This combination lets attackers identify valid users and circumvent protections designed to prevent brute-force or credential stuffing attacks. [1, 2]
How can this vulnerability impact me? :
If you run a publicly accessible Kanboard instance relying on IP-based protections or CAPTCHA for login rate limiting, this vulnerability increases the risk that attackers can enumerate valid usernames and bypass brute-force protections. This puts all user accounts at higher risk of credential stuffing or brute-force attacks, potentially leading to unauthorized access if weak or reused passwords are exploited. [2]
How can this vulnerability be detected on my network or system? Can you suggest some commands?
This vulnerability can be detected by attempting to enumerate valid usernames through the login page by submitting login attempts and observing whether a CAPTCHA challenge appears. Specifically, try submitting three failed login attempts with a username and check if a CAPTCHA is triggered, which indicates a valid username. Additionally, testing for IP spoofing can be done by sending login requests with spoofed HTTP headers such as 'HTTP_X_FORWARDED_FOR' and observing if IP-based rate limiting or blocking mechanisms like Fail2Ban are bypassed. Commands to test this could include using curl to send login requests with different usernames and spoofed IP headers, for example: 1. Enumerate usernames: curl -X POST -d 'username=targetuser&password=wrongpass' https://your-kanboard-instance/login Repeat 3 times and observe if CAPTCHA appears. 2. Test IP spoofing: curl -X POST -d 'username=anyuser&password=wrongpass' -H 'X-Forwarded-For: 1.2.3.4' https://your-kanboard-instance/login Change the IP in the header to see if rate limiting is bypassed. Monitoring login responses for CAPTCHA presence and checking logs for IP-based blocking inconsistencies can help detect exploitation attempts. [2]
What immediate steps should I take to mitigate this vulnerability?
Immediate mitigation steps include upgrading Kanboard to version 1.2.46 or later, which contains a patch that enforces CAPTCHA challenges regardless of username validity and tracks failed login attempts per IP address to prevent brute-force attacks. Additionally, review and harden the handling of HTTP headers used to determine client IP addresses to prevent IP spoofing, ensuring that only trusted reverse proxies can set these headers. If upgrading immediately is not possible, consider implementing additional rate limiting and CAPTCHA enforcement on the login page that does not rely solely on username existence or IP address, and monitor login attempts for suspicious patterns. Avoid relying solely on IP-based protections like Fail2Ban without validating the source IP. [1, 2]