6.1
MEDIUM CVSS 3.1
CVE-2026-77433
Kiwi TCMS Open Redirect Vulnerability
Description

## Summary In Kiwi TCMS version 16.1, the fix for CVE-2026-54724 (open redirect via unvalidated `next` parameter) in the account confirmation endpoint is incomplete. The validation uses `startswith("/")` to check if the redirect URL is local, but this is bypassed by protocol-relative URLs like `//evil.com` which start with `/` but redirect the browser to an external attacker-controlled domain. 16.1’s incomplete mitigation still allows protocol-relative destinations and earlier releases lack the mitigation. ## Vulnerable Code In `tcms/kiwi_auth/views.py`, the `Confirm` view (line ~113): def get_redirect_url(self, *args, **kwargs): self.url = self.request.GET.get("next", reverse("core-views-index")) if not self.url.startswith("/"): self.url = reverse("core-views-index") The check `startswith("/")` passes for `//evil.com` because it begins with `/`, but browsers interpret `//evil.com` as a protocol-relative URL that redirects to `https://evil.com` (or `http://evil.com` depending on the current page's protocol). ## Proof of Concept GET /confirm/<activation_key>/?next=//evil.com/phishing HTTP/1.1 Host: kiwi.example.com Response: HTTP/1.1 302 Found Location: //evil.com/phishing The browser follows the redirect to `https://evil.com/phishing`. Verification: >>> url = "//evil.com/phishing" >>> url.startswith("/") True # passes the check! ## Impact An attacker can craft a confirmation link that, after the user confirms their account, redirects them to a phishing page. This is useful for: - Credential phishing (fake login page on attacker domain) - Malware delivery after trusted action - Social engineering (user trusts the link because it's from the legitimate Kiwi TCMS instance) The attack requires sending a crafted activation link to a user who is registering, or intercepting/predicting the activation key. ## Suggested Fix Use Django's `url_has_allowed_host_and_scheme()` utility instead of a simple `startswith` check: from django.utils.http import url_has_allowed_host_and_scheme def get_redirect_url(self, *args, **kwargs): self.url = self.request.GET.get("next", reverse("core-views-index")) if not url_has_allowed_host_and_scheme( self.url, allowed_hosts={self.request.get_host()}, require_https=self.request.is_secure(), ): self.url = reverse("core-views-index") This properly rejects protocol-relative URLs, absolute URLs to other hosts, and other bypass patterns. Fixed in Version 16.2

INFO

Published Date :

Nov. 9, 2026, 11:24 p.m.

Last Modified :

Nov. 9, 2026, 11:24 p.m.

Remotely Exploit :

Yes !

Source :

github-security-advisories
Affected Products

The following products are affected by CVE-2026-77433 vulnerability. Even if cvefeed.io is aware of the exact versions of the products that are affected, the information is not represented in the table below.

ID Vendor Product Action
1 Kiwitcms kiwi_tcms
CVSS Scores
The Common Vulnerability Scoring System is a standardized framework for assessing the severity of vulnerabilities in software and systems. We collect and displays CVSS scores from various sources for each CVE.
Score Version Severity Vector Exploitability Score Impact Score Source
CVSS 3.1 MEDIUM github
Solution
Update Kiwi TCMS to version 16.2 or later to fix an incomplete open redirect vulnerability.
  • Update Kiwi TCMS to version 16.2 or later.
  • Apply the suggested Django fix for redirect validation.
  • Use url_has_allowed_host_and_scheme for URL validation.
  • Ensure redirect URLs are properly validated.
CWE - Common Weakness Enumeration

While CVE identifies specific instances of vulnerabilities, CWE categorizes the common flaws or weaknesses that can lead to vulnerabilities. CVE-2026-77433 is associated with the following CWEs:

Common Attack Pattern Enumeration and Classification (CAPEC)

Common Attack Pattern Enumeration and Classification (CAPEC) stores attack patterns, which are descriptions of the common attributes and approaches employed by adversaries to exploit the CVE-2026-77433 weaknesses.

We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).

Results are limited to the first 15 repositories due to potential performance issues.

The following list is the news that have been mention CVE-2026-77433 vulnerability anywhere in the article.

EPSS is a daily estimate of the probability of exploitation activity being observed over the next 30 days. Following chart shows the EPSS score history of the vulnerability.