chore(deps): update dependency gradio to v6.7.0 [security] - abandoned#9
Closed
test-renovate-bot-12345[bot] wants to merge 2 commits intomainfrom
Closed
chore(deps): update dependency gradio to v6.7.0 [security] - abandoned#9test-renovate-bot-12345[bot] wants to merge 2 commits intomainfrom
test-renovate-bot-12345[bot] wants to merge 2 commits intomainfrom
Conversation
Signed-off-by: Alexander Barabanov <97449232+AlexanderBarabanov@users.noreply.github.com>
Signed-off-by: test-renovate-bot-12345[bot] <211697243+test-renovate-bot-12345[bot]@users.noreply.github.com>
4b9dd92 to
8731f2a
Compare
a48f202 to
0a770c5
Compare
Author
Autoclosing SkippedThis PR has been flagged for autoclosing. However, it is being skipped due to the branch being already modified. Please close/delete it manually or report a bug if you think this is in error. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
6.4.0→6.7.0Gradio has an Open Redirect in its OAuth Flow
CVE-2026-28415 / GHSA-pfjf-5gxr-995x
More information
Details
Summary
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).
Details
An attacker can craft a URL like https://my-space.hf.space/logout?_target_url=https://evil.com/phishing that redirects the user to an external site after logout. Because the URL originates from a trusted hf.space domain, users are more likely to trust the link.
Impact
Phishing — an attacker can use the trusted domain to redirect users to a malicious site. No direct data exposure or server-side impact.
Fix
The _target_url parameter is now sanitized to only use the path, query, and fragment, stripping any scheme or host.
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:NReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
Gradio: Mocked OAuth Login Exposes Server Credentials and Uses Hardcoded Session Secret
CVE-2026-27167 / GHSA-h3h8-3v2v-rg7m
More information
Details
Summary
Gradio applications running outside of Hugging Face Spaces automatically enable "mocked" OAuth routes when OAuth components (e.g.
gr.LoginButton) are used. When a user visits/login/huggingface, the server retrieves its own Hugging Face access token viahuggingface_hub.get_token()and stores it in the visitor's session cookie. If the application is network-accessible, any remote attacker can trigger this flow to steal the server owner's HF token. The session cookie is signed with a hardcoded secret derived from the string"-v4", making the payload trivially decodable.Affected Component
gradio/oauth.py— functionsattach_oauth(),_add_mocked_oauth_routes(), and_get_mocked_oauth_info().Root Cause Analysis
1. Real token injected into every visitor's session
When Gradio detects it is not running inside a Hugging Face Space (
get_space() is None), it registers mocked OAuth routes via_add_mocked_oauth_routes()(line 44).The function
_get_mocked_oauth_info()(line 307) callshuggingface_hub.get_token()to retrieve the real HF access token configured on the host machine (viaHF_TOKENenvironment variable orhuggingface-cli login). This token is stored in a dict that is then injected into the session of any visitor who hits/login/callback(line 183):The
mocked_oauth_infodict contains the real token at keyaccess_token(line 329):2. Hardcoded session signing secret
The
SessionMiddlewaresecret is derived fromOAUTH_CLIENT_SECRET(line 50):When running outside a Space,
OAUTH_CLIENT_SECRETis not set, so the secret becomes the constant string"-v4", hashed with SHA-256. Since this value is public (hardcoded in source code), any attacker can decode the session cookie payload without needing to break the signature.In practice, Starlette's
SessionMiddlewarestores the session data as plaintext base64 in the cookie — the signature only provides integrity, not confidentiality. The token is readable by simply base64-decoding the cookie payload.Attack Scenario
Prerequisites
gr.LoginButton,gr.OAuthProfile, etc.)server_name="0.0.0.0",share=True, port forwarding, etc.)OAUTH_CLIENT_SECRETis not set (default outside of Spaces)Steps
http://<target>:7860/login/huggingface/login/callbacksessioncookie containing the real HF token.) to extract theaccess_tokenMinimal Vulnerable Application
Proof of Concept
Severity
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:NReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
Gradio has SSRF via Malicious
proxy_urlInjection ingr.load()Config ProcessingCVE-2026-28416 / GHSA-jmh7-g254-2cq9
More information
Details
Summary
A Server-Side Request Forgery (SSRF) vulnerability in Gradio allows an attacker to make arbitrary HTTP requests from a victim's server by hosting a malicious Gradio Space. When a victim application uses
gr.load()to load an attacker-controlled Space, the maliciousproxy_urlfrom the config is trusted and added to the allowlist, enabling the attacker to access internal services, cloud metadata endpoints, and private networks through the victim's infrastructure.Details
The vulnerability exists in Gradio's config processing flow when loading external Spaces:
Config Fetching (
gradio/external.py:630):gr.load()callsBlocks.from_config()which fetches and processes the remote Space's configuration.Proxy URL Trust (
gradio/blocks.py:1231-1233): Theproxy_urlfrom the untrusted config is added directly toself.proxy_urls:Built-in Proxy Route (
gradio/routes.py:1029-1031): Every Gradio app automatically exposes a/proxy={url_path}endpoint:Host-based Validation (
gradio/routes.py:365-368): The validation only checks if the URL's host matches any trustedproxy_urlhost:An attacker can set
proxy_urltohttp://169.254.169.254/(AWS metadata) or any internal service, and the victim's server will proxy requests to those endpoints.PoC
Full PoC: https://gist.github.com/logicx24/8d4c1aaa4e70f85d0d0fba06a463f2d6
1. Attacker creates a malicious Gradio Space that returns this config:
{ "mode": "blocks", "components": [...], "proxy_url": "http://169.254.169.254/" # AWS metadata endpoint }2. Victim loads the malicious Space:
3. Attacker exploits the proxy:
Impact
Who is impacted:
gr.load()to load external/untrusted SpacesAttack scenarios:
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:NReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
Gradio is Vulnerable to Absolute Path Traversal on Windows with Python 3.13+
CVE-2026-28414 / GHSA-39mp-8hj3-5c49
More information
Details
Summary
Gradio apps running on Window with Python 3.13+ are vulnerable to an absolute path traversal issue that enables unauthenticated attackers to read arbitrary files from the file system.
Details
Python 3.13+ changed the definition of
os.path.isabsso that root-relative paths like/windows/win.inion Windows are no longer considered absolute paths, resulting in a vulnerability in Gradio's logic for joining paths safely.This can be exploited by unauthenticated attackers to read arbitrary files from the Gradio server, even when Gradio is set up with authentication.
PoC
Impact
Arbitrary file read in the context of the Windows user running Gradio.
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:NReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
Release Notes
gradio-app/gradio (gradio)
v6.7.0Compare Source
Features
d720b25- Allow :fastest :cheapest options when loading models. Thanks @dawoodkhan82!e29e1cc- Add Space-specific skill generation togradio skills add. Thanks @abidlabs!978bc6e- Add server functions support to gr.HTML. Thanks @aliabid94!a0fff5c- Add push_to_hub method to gr.HTML. Add a gallery to view notable custom HTML components. Thanks @freddyaboulton!820eff0- Add support for gr.HTML as a layout element. Thanks @aliabid94!d6907ac- addSKILLS.mdto Gradio repo, part 1 + cleanup. Thanks @abidlabs!3e625a0- Better error handling when connection to server is lost. Thanks @abidlabs!Fixes
dcfc429- Fix Button component ignoring thescaleparameter. Thanks @hztBUAA!ccff8b8- Walkthrough Selected Bug. Thanks @freddyaboulton!ac29df8- fix DataFrame NaN values becoming 0 after sorting. Thanks @Mr-Neutr0n!6011b00- Fix absolute path issue in Windows. Thanks @freddyaboulton!7c3fa2a- Fix Loading Spinner Issue Caused by Events Targeting Components In Inactive Tabs. Thanks @freddyaboulton!57707c7- Fix Tab i18n issue. Thanks @freddyaboulton!1387fc6- Fix unload event bug. Thanks @freddyaboulton!81482b5- Lazy load sub-tab and accordion components. Thanks @dawoodkhan82!v6.6.0Compare Source
Features
1c671b3- Hide forms with no elements. Thanks @aliabid94!b01c95a- Rewrite behavior section of docs. Thanks @aliabd!Fixes
d0b3422- Fix stop button not switching back to submit button in chat interface. Thanks @freddyaboulton!6a0c6ea- Refactor translation logic. Thanks @hannahblair!ebbd242- Ensure disconnected toast text is visible. Thanks @hannahblair!6533d38- Fix stop button not working in Audio streaming. Thanks @hysts!a8e6b7b- Fix ColorPicker not firing focus, blur, or submit events after Svelte 5 migration. Thanks @veeceey!db7ab39- Fix Gallery fullscreen button not working in preview mode. Thanks @veeceey!9810396- Fix Gallery preview=True parameter not working on initial load. Thanks @veeceey!e0cd4ca- Fix load examples bug in spa. Thanks @freddyaboulton!a2a0078-Videoto Svelte 5. Thanks @dawoodkhan82!fc7c01e- Validate proxy url host. Thanks @freddyaboulton!b10e17c- fix(reloading): Re-assign config forSpacesReloader. Thanks @cbensimon!dfee0da- Oauth fixes. Thanks @freddyaboulton!8f8cef8- Fix windows tests. Thanks @freddyaboulton!226daba- Fix bug where children of accordions dont get rendered when they are opened programmatically. Thanks @freddyaboulton!c006778- Fix AttributeError in ColoredCheckboxGroup.api_info(). Thanks @hysts!v6.5.1Compare Source
Fixes
26cea7a- Ensure change event fires when slider value changes to 0. Thanks @hannahblair!0eac164- [Hotfix] add pytz to requirements. Thanks @RektPunk!v6.5.0Compare Source
Features
fc366b4- Allow webcam uploads and clipboard paste for gallery. Thanks @freddyaboulton!ddbb6a9- Allow pandas version 3. Thanks @freddyaboulton!Fixes
6594c9c- Migrate Dataset to Svelte 5. Thanks @freddyaboulton!151cbd1- Fix private spaces. Thanks @freddyaboulton!5ecf6d2- Fix CSS root in spaces. Thanks @freddyaboulton!99caae6- Migrate StatusTracker to Svelte 5. Thanks @freddyaboulton!7ed6dfa- Migrate js/fileexplorer to svelte5. Thanks @aliabid94!af5e86f- Migrate gr.MultimodalTextbox. Thanks @hannahblair!8409b7a- Migrate js/code. Thanks @aliabid94!05acc66- Fix Login. Thanks @freddyaboulton!Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.