CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-42350

CVE-2026-42350: Client-Side Open Redirect in Kargo UI OIDC Authentication Flow

Alon Barad
Alon Barad
Software Engineer

Aug 27, 2026·6 min read·2 visits

Executive Summary (TL;DR)

Kargo UI allowed client-side open redirects via unvalidated query parameters after OIDC login or token renewal, enabling phishing attacks. The issue is fixed in versions 1.7.10, 1.8.13, 1.9.8, and 1.10.2.

A client-side open redirect vulnerability has been identified in the Kargo user interface. The flaw resides in the handling of OpenID Connect (OIDC) login and token renewal flows, where the application extracts an unvalidated destination path from the redirectTo query parameter. Attackers can exploit this to redirect authenticated users to arbitrary external domains.

Vulnerability Overview

Kargo is an open-source tool developed by Akuity that automates application promotion across environments. The vulnerability resides entirely within the frontend client-side user interface (UI) components responsible for managing user sessions and authentication via OpenID Connect (OIDC). Specifically, the vulnerability affects the login page, OIDC login redirection page, and token renewal components.

The attack surface is exposed via the redirectTo query parameter, which is designed to preserve the user's destination path prior to authenticating. Because the application processes this parameter without validation, attackers can manipulate the navigation target to point to external, malicious domains. This allows adversaries to construct deceptive links that leverage the trust of the legitimate Kargo deployment domain.

When an unauthenticated user accesses the manipulated link and successfully authenticates, the client-side router or browser navigation API automatically redirects the user's browser session. The primary risk of this behavior is phishing, where attackers redirect users to a cloned authentication interface to capture credentials or tokens. The vulnerability is tracked as CVE-2026-42350 with a Medium severity rating.

Root Cause Analysis

The root cause of CVE-2026-42350 is the absence of origin validation on the redirectTo query parameter before invoking client-side navigation. The Kargo UI uses React Router's navigate function and native browser APIs like window.location.replace() to execute redirections. These APIs accept destination paths as strings and resolve them relative to the current origin or as absolute URLs.

Under the WHATWG URL specification, certain path structures are normalized into absolute URLs, even if they initially appear to be relative paths. For instance, a protocol-relative path starting with two forward slashes (e.g., //attacker.com) is interpreted as an absolute URL targeting https://attacker.com. This behavior allows attackers to bypass naive checks that only verify the absence of an explicit protocol scheme like http:// or https://.

Furthermore, modern browsers normalize backslashes inside URL paths under specific conditions. A path starting with a forward slash followed by a backslash (e.g., /\attacker.com) normalizes to //attacker.com during parsing. Since the unpatched Kargo frontend simply extracted the redirectTo value and appended or passed it to navigation APIs, it failed to restrict the destination to the application's local origin.

Code Analysis

To understand the exact code-level flaw, we examine the vulnerable implementation in Kargo UI and the corresponding patch. In the vulnerable version, the component extracts the redirectTo parameter from URLSearchParams and immediately performs navigation without any validation checks.

In oidc-login.tsx, the application uses window.location.replace(window.location.origin + redirectTo) to handle the redirect. While prepending the origin is intended to sanitize the redirect, some browsers resolve origin + //attacker.com as an external URL if the concatenation results in a malformed path structure that the browser recovers by navigating to the absolute portion. In token-renew.tsx and login.tsx, the raw parameter is passed directly to React Router's navigate or <Navigate /> component, allowing absolute path escapes.

The patch introduces a dedicated validation helper named isSafeRedirectPath in ui/src/config/auth.ts. This function first checks if the path string is null or does not start with a forward slash. It then uses the browser's native URL constructor to resolve the path against window.location.origin and strictly compares the resulting origin to ensure they match.

// File: ui/src/config/auth.ts
export const isSafeRedirectPath = (path: string | null): path is string => {
  if (!path || !path.startsWith('/')) return false;
  try {
    return new URL(path, window.location.origin).origin === window.location.origin;
  } catch {
    return false;
  }
};

By validating that the parameter starts with a single / and resolves to the exact same origin, the patch prevents both protocol-relative and backslash-prefixed bypasses. The calling components in oidc-login.tsx, token-renew.tsx, and login.tsx were updated to run this check and fall back to the default home path if the validation fails.

Exploitation Methodology

Exploitation of CVE-2026-42350 requires the attacker to construct a malicious URL and deliver it to a target user who has access to the Kargo deployment. The attacker begins by identifying the base URL of the target's Kargo instance, such as https://kargo.target-organization.com.

The attacker then appends the vulnerable login path and the redirectTo query parameter containing a protocol-relative URL pointing to an attacker-controlled domain. A typical exploit string is: https://kargo.target-organization.com/login?redirectTo=//phishing-kargo.com/login.

When the victim clicks the link, they see the legitimate domain in their address bar, which establishes trust. The victim performs the standard authentication flow via the configured OIDC identity provider. Once the identity provider issues the token and redirects the user back to Kargo, the Kargo frontend processes the successful login.

The frontend then executes the navigation logic using the unvalidated redirectTo parameter. The browser resolves the protocol-relative string //phishing-kargo.com/login to https://phishing-kargo.com/login and redirects the user. At this stage, the attacker presents a cloned login page or a message requesting additional credentials, effectively capturing sensitive user input.

Impact Assessment

The impact of CVE-2026-42350 is primarily associated with credential theft and session hijacking via phishing campaigns. While the vulnerability does not directly permit remote code execution on the Kargo server or database modification, it compromises the overall security posture of the continuous delivery (CD) pipeline.

Since Kargo manages application promotions across sensitive production environments, Kargo administrators possess high-privilege credentials. If an administrator is successfully phished through an open redirect, the attacker could obtain OIDC session tokens, API keys, or Okta credentials. This can lead to unauthorized access to the Kargo control plane, allowing attackers to promote malicious container images or modify application configurations.

The CVSS 4.0 score is calculated as 5.1 (Medium), reflecting the requirement for user interaction and the low subsequent impact on confidentiality. The EPSS score indicates a low short-term exploitation probability of 0.24%. However, because open redirect vulnerabilities require minimal technical skill to exploit, security teams should treat the risk as significant within enterprise environments.

Remediation & Mitigation

The primary and recommended remediation for CVE-2026-42350 is upgrading the Kargo installation to a patched version. Maintainers have released fixes across multiple release lines to accommodate different deployment stages.

Organizations should identify their current Kargo version and upgrade according to the following schedule:

  • Upgrade 1.7.x deployments to version 1.7.10 or later.
  • Upgrade 1.8.x deployments to version 1.8.13 or later.
  • Upgrade 1.9.x deployments to version 1.9.8 or later.
  • Upgrade 1.10.x deployments to version 1.10.2 or later.

In environments where an immediate upgrade is not feasible, temporary mitigations can be applied at the ingress or reverse proxy layer. Web Application Firewalls (WAFs) or reverse proxies like Nginx can be configured with rules to block incoming requests containing external URLs or protocol-relative patterns in the redirectTo query parameter. Additionally, security awareness programs should instruct users to verify the address bar whenever they are redirected after logging into internal tools.

Official Patches

AkuityGHSA-g7gw-m874-7rmf Security Advisory

Fix Analysis (3)

Technical Appendix

CVSS Score
5.1/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:N/SA:N
EPSS Probability
0.24%
Top 85% most exploited

Affected Systems

Kargo UI OIDC authentication flowsKargo UI Token Renewal interfaceKargo UI Login interface

Affected Versions Detail

Product
Affected Versions
Fixed Version
Kargo
Akuity
< 1.7.101.7.10
Kargo
Akuity
>= 1.8.0-rc.1, < 1.8.131.8.13
Kargo
Akuity
>= 1.9.0-rc.1, < 1.9.81.9.8
Kargo
Akuity
>= 1.10.0-rc.1, < 1.10.21.10.2
AttributeDetail
CWE IDCWE-601
Attack VectorNetwork
CVSS v4.05.1 (Medium)
EPSS Score0.00239 (Percentile: 14.83%)
Exploit MaturityTheoretical / None
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1566.002Spearphishing Link
Initial Access
CWE-601
URL Redirection to Untrusted Site ('Open Redirect')

A web application accepts a user-controlled input that specifies a link to an external site, and uses that input in a redirect.

Vulnerability Timeline

Security fixes committed by maintainers
2026-04-22
GHSA advisory published and CVE registered
2026-05-08
NVD publishes analyzed record
2026-07-24

References & Sources

  • [1]GitHub Security Advisory GHSA-g7gw-m874-7rmf
  • [2]NVD - CVE-2026-42350
  • [3]CVE Record - CVE-2026-42350

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 2 hours ago•CVE-2026-54718
7.2

CVE-2026-54718: Remote Code Execution via Advanced Workflow Email Template in Silverstripe

A Server-Side Template Injection (SSTI) vulnerability in the Silverstripe Advanced Workflow module allows authenticated attackers with workflow authoring permissions to achieve arbitrary code execution. By manipulating the NotifyUsersWorkflowAction.EmailTemplate field, attackers can inject template code that dynamically executes arbitrary PHP commands via the core translation helper interpolation path.

Amit Schendel
Amit Schendel
6 views•4 min read
•about 3 hours ago•CVE-2026-54732
6.5

CVE-2026-54732: Arbitrary File Write via Path Traversal in libreoffice-convert

A path traversal and arbitrary file write vulnerability exists in the libreoffice-convert Node.js package in all versions prior to 1.8.2. The convertWithOptions function fails to validate or sanitize the caller-controlled options.fileName parameter, allowing directory traversal sequences to write files outside the temporary directory.

Amit Schendel
Amit Schendel
5 views•6 min read
•about 4 hours ago•GHSA-MF7Q-R4RV-JV94
8.2

GHSA-MF7Q-R4RV-JV94: Time-of-Check to Time-of-Use (TOCTOU) Signature Verification Bypass in Crossplane Runtime

Crossplane's runtime package manager engine contains a Time-of-Check to Time-of-Use (TOCTOU) race condition in its container signature verification pipeline. When Crossplane parses package definitions using dynamic tag-based references, it resolves the tag on the remote OCI registry twice: once during the signature verification step (the 'Check' phase) and once during the fetch and install step (the 'Use' phase). An attacker controlling the destination OCI registry can exploit this vulnerability by serving a validly signed benign image for the verification phase, and then dynamically swapping the tag to point to an unsigned, malicious package during the fetch phase.

Alon Barad
Alon Barad
4 views•7 min read
•about 5 hours ago•CVE-2026-54721
8.8

CVE-2026-54721: Remote Code Execution via Server-Side Template Injection in Silverstripe UserForms

A Server-Side Template Injection (SSTI) vulnerability in the Silverstripe UserForms module allows authenticated CMS users with basic form configuration privileges to achieve remote code execution (RCE). The flaw resides in the processing of the email recipient subject field, where user-supplied template translation tags are evaluated by the template engine, leading to arbitrary PHP execution via dynamic variable interpolation.

Alon Barad
Alon Barad
5 views•5 min read
•about 13 hours ago•CVE-2026-54356
7.1

CVE-2026-54356: Missing Authorization in Budibase leading to Arbitrary S3 Upload URL Generation

CVE-2026-54356 is a missing authorization vulnerability (CWE-862) within the backend component of the Budibase low-code platform. The vulnerability exists inside the `@budibase/server` package in versions prior to 3.41.3. An authenticated user with the lowest privilege level can invoke the attachment upload URL endpoint directly and obtain an S3 pre-signed PutObject URL signed with the server's S3 credentials.

Alon Barad
Alon Barad
7 views•5 min read
•about 14 hours ago•CVE-2026-54556
8.2

CVE-2026-54556: Heap Exhaustion and Denial of Service in http4s Ember HTTP/2 Backend via HPACK Bomb

CVE-2026-54556 is a high-severity Denial of Service (DoS) vulnerability impacting the Ember HTTP/2 backend of http4s, a popular functional Scala interface for HTTP services. The vulnerability arises from an improper handling of highly compressed HPACK header blocks, which enables unauthenticated remote attackers to trigger severe memory amplification and crash the JVM runtime via an OutOfMemoryError.

Amit Schendel
Amit Schendel
5 views•6 min read