Cloudanix VulnDB

CVE-2026-28415

Medium · 4.3

CVSS

4.3

EPSS

0.3%

Published

Feb 27, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A trusted app link could be abused to send users to a fake or malicious website after they click it.

Chainable
Exploitation
Requires User Interaction
Attacker needs
User Interaction
Complexity
Moderate
Impact
Data Tampering
Component
Library
Class
Information Disclosure
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

This vulnerability is an open redirect in Gradio’s OAuth flow before version 6.6.0. The affected _redirect_to_target() logic accepts a user-controlled _target_url query parameter on OAuth-related endpoints such as /logout and /login/callback and, before the fix, does not properly restrict that value to an application-local path. An attacker can craft a Gradio URL that appears to belong to a trusted app but causes the victim’s browser to be redirected to an arbitrary external domain. The direct technical impact is limited integrity impact: user navigation can be manipulated, but the flaw does not by itself disclose server-side data, execute code, bypass authentication, or affect service availability.

Why it matters to the business

Organizations using OAuth-enabled Gradio apps may have users tricked into clicking trusted-looking application links that redirect them to phishing pages, credential-harvesting sites, malware delivery pages, or fraudulent login flows. The CVSS score is moderate and EPSS is currently low, and it is not listed in CISA KEV, so this is not currently a high-likelihood mass-exploitation issue; however, open redirects are commonly used to improve the credibility of phishing campaigns because the initial link uses a legitimate domain. Public-facing Gradio demos, Hugging Face Spaces, and apps used by employees or customers for authentication workflows are the highest business concern.

How an attack unfolds

An attacker identifies a Gradio application with OAuth enabled, such as an app using a login button or running in an OAuth-backed hosting flow. The attacker crafts a URL to an affected endpoint, commonly /logout or /login/callback, and supplies a malicious external destination in the _target_url query parameter. The attacker then sends the crafted link through email, chat, social media, documentation comments, or another lure. When a victim clicks it, the browser first visits the legitimate Gradio application URL and is then redirected to the attacker-controlled site. The attacker-controlled site can impersonate a login page, request credentials or tokens, deliver malware, or continue a broader social-engineering workflow. Exploitation requires user interaction and does not require attacker authentication.

How to fix it

Upgrade Gradio to version 6.6.0 or later. Version 6.6.0 changes handling of _target_url so that only the path, query, and fragment are used and any scheme or host is stripped, preventing redirects to arbitrary external domains. For applications that cannot immediately upgrade, mitigate by disabling OAuth login flows where feasible, avoiding use of affected /logout and /login/callback redirect behavior, placing a reverse proxy or application gateway rule in front of the app to block or normalize _target_url values containing external schemes or hosts, and educating users not to trust unexpected login/logout links. Where possible, enforce an allowlist of permitted redirect destinations and reject absolute URLs such as https://example.com in redirect parameters.

How to confirm the fix worked

Confirm the deployed Gradio version is 6.6.0 or later using package metadata, dependency lockfiles, container manifests, or runtime inspection. Test affected apps by sending a request to /logout or /login/callback with _target_url set to an external absolute URL such as https://example.com; a fixed deployment should not redirect the browser to that external host and should instead strip the scheme and host or otherwise reject the value. Review OAuth-enabled Gradio apps specifically, because non-OAuth deployments are not expected to expose the affected flow in the same way. Also validate reverse proxy or WAF mitigations by confirming requests with absolute external _target_url values are blocked, rewritten, or logged.

Typical attack path

  1. Find a Gradio app running a vulnerable version before 6.6.0 with OAuth enabled.
  2. Confirm that OAuth-related endpoints such as /logout or /login/callback accept the _target_url parameter.
  3. Create a URL where _target_url points to an attacker-controlled external domain.
  4. Send the trusted-looking Gradio URL to a target user through a phishing or social-engineering channel.
  5. Victim clicks the link and is redirected from the legitimate Gradio app to the attacker-controlled destination.
  6. Attacker uses the destination page for phishing, credential capture, malware delivery, or further deception.

How to detect it

Look for evidence of requests to OAuth-related Gradio endpoints where the _target_url parameter contains an absolute external URL or other off-domain redirect target. Useful sources include web server access logs, reverse proxy logs, WAF logs, CDN logs, application logs, Hugging Face Space access telemetry where available, email security logs, browser/proxy logs, and phishing-report submissions. Focus on GET requests to /logout and /login/callback with _target_url values containing http://, https://, percent-encoded schemes, protocol-relative URLs, or domains unrelated to the legitimate Gradio app. Correlate suspicious requests with user-agent, referrer, source IP, timestamps, email delivery events, and subsequent outbound web traffic to the redirected domain. Because the vulnerability primarily enables phishing redirection, exploitation may leave little server-side evidence beyond the crafted request and redirect response; follow-on compromise evidence is more likely to appear in identity provider logs, proxy logs, endpoint telemetry, and credential-phishing alerts. There are no named threat actors or KEV exploitation reports provided for this issue, so detections should be behavior-based rather than actor-specific.

  • /logout?_target_url=http://
  • /logout?_target_url=https://
  • /login/callback?_target_url=http://
  • /login/callback?_target_url=https://
  • _target_url=http%3A%2F%2F
  • _target_url=https%3A%2F%2F
  • _target_url=//
  • _target_url=%2F%2F
  • GET /logout
  • GET /login/callback
  • _target_url=

What your security team should do

  • Inventory public and internal Gradio applications, especially Hugging Face Spaces or apps using gr.LoginButton/OAuth.
  • Prioritize upgrading all Gradio deployments before 6.6.0 to version 6.6.0 or later.
  • Add WAF, reverse proxy, or application-layer detections for _target_url values containing http://, https://, protocol-relative URLs, or untrusted external domains on /logout and /login/callback.
  • Search recent access logs for suspicious redirects involving _target_url on OAuth endpoints, especially links sent in phishing reports or user complaints.
  • Review phishing telemetry, email gateway logs, and browser/proxy logs for campaigns that used legitimate Gradio app URLs as redirectors.
  • If suspicious use is found, identify affected users, inspect the final redirected domains, and assess whether credentials, OAuth tokens, or session cookies may have been phished on the destination site.
  • Update secure coding and review standards to require allowlisted or relative-only redirect targets in authentication and logout flows.

The record

Gradio is an open-source Python package designed for quick prototyping. Prior to version 6.6.0, the _redirect_to_target() function in Gradio's OAuth flow accepts an unvalidated _target_url query parameter, allowing redirection to arbitrary external URLs. This affects the /logout and /login/callback endpoints on Gradio apps with OAuth enabled (i.e. apps running on Hugging Face Spaces with gr.LoginButton). Starting in version 6.6.0, the _target_url parameter is sanitized to only use the path, query, and fragment, stripping any scheme or host.

Affected packages

Ecosystem Package Introduced Fixed
PyPI gradio 0 6.6.0

Related vulnerabilities