Skip to content

H3-2026-1089

Gradio Async Authentication Dependency Authentication Bypass

Category VULNERABILITY
Base Score 9.1

Description

Gradio's get_current_user function invokes an async auth_dependency callable without awaiting its result, so the returned coroutine object, rather than the dependency's actual return value, is evaluated for truthiness. A coroutine object is always truthy in Python, so the check passes regardless of what the dependency would otherwise decide. Remote attackers can reach any route protected by an async auth_dependency without supplying valid credentials. The flaw applies specifically to Gradio applications configured with an async, rather than synchronous, auth_dependency.

Impact

Remote attackers bypass authentication entirely on any Gradio application configured with an async auth_dependency. This grants access to every protected route, including API endpoints, application configuration, and exposed user data. The bypass requires no credentials or prior interaction with the target. Deployments relying on this authentication model for access control face a complete control failure.

References