CVE-2026-28416

Description

A flaw was found in Gradio, an open-source Python package for rapid prototyping. A remote attacker can exploit a Server-Side Request Forgery (SSRF) vulnerability by hosting a malicious Gradio Space. When a victim application uses gr.load() to load this attacker-controlled Space, a malicious proxy_url from the configuration is trusted. This allows the attacker to make arbitrary HTTP requests from the victim's server, potentially accessing internal services, cloud metadata endpoints, and private networks through the victim's infrastructure.

Statement

This is an IMPORTANT Server-Side Request Forgery (SSRF) vulnerability in Gradio, affecting the ansible-chatbot-service within Red Hat Ansible Services. The flaw allows an attacker to make arbitrary HTTP requests from a victim's server by injecting a malicious proxy_url when the application uses gr.load() to load an attacker-controlled Gradio Space. This could lead to unauthorized access to internal services, cloud metadata, and private networks.

Mitigation

To mitigate this vulnerability, avoid loading Gradio Spaces from untrusted or unverified sources when using `gr.load()` in applications like the Ansible Chatbot Service. Additionally, implement network egress filtering to restrict outbound connections from systems running Gradio applications, preventing access to internal network resources, cloud metadata endpoints, and private networks.

Understanding the Weakness (CWE)

Confidentiality

Technical Impact: Read Application Data

Integrity

Technical Impact: Execute Unauthorized Code or Commands

Access Control

Technical Impact: Bypass Protection Mechanism

By providing URLs to unexpected hosts or ports, attackers can make it appear that the server is sending the request, possibly bypassing access controls such as firewalls that prevent the attackers from accessing the URLs directly. The server can be used as a proxy to conduct port scanning of hosts in internal networks, use other URLs such as that can access documents on the system (using file://), or use other protocols such as gopher:// or tftp://, which may provide greater control over the contents of requests.

Frequently Asked Questions

Want to get errata notifications? Sign up here.