深入解析Gradio 5安全审计:从SSRF漏洞到加密加固

本文详细记录了Trail of Bits对Hugging Face的Gradio 5机器学习GUI框架的安全审计过程,发现包括SSRF、XSS、任意文件泄露等8个高危漏洞,并推动实施了SDLC集成安全测试和加密通信等加固措施。

审计Gradio 5:Hugging Face的ML GUI框架 - Trail of Bits博客

Gradio简介

Gradio是一个为构建基于Web的机器学习应用提供简单易用界面的框架。开发者只需几行代码即可创建可交互、可分享的演示程序,无需任何前端开发经验。该框架在机器学习从业者中极受欢迎,在PyPi上每月下载量超过610万次,是Stable-diffusion-webui(GitHub 14.1万星)和text-generation-webui(GitHub 4万星)等热门项目的核心引擎。

以下是最简单的Gradio接口实现示例:

1
2
3
4
5
6
7
import gradio as gr

def greet(name):
    return "Hello " + name + "!"

demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch()

Gradio架构基于输入组件、用户定义的Python转换函数和输出组件。每个输入组件都有预处理函数,负责将用户输入转换为Python函数接收的类型(如图像转为numpy数组),输出组件则通过后处理函数执行反向转换。

审计发现

Gradio服务器安全

审计团队针对服务器实现提出了关键安全问题:

  • 攻击者能否从用户Gradio服务器窃取任意文件?
  • 能否向服务器任意位置上传文件?
  • 能否在用户内部网络发起任意请求?
  • API端点、组件处理函数是否存在注入漏洞?

发现的高危漏洞包括:

  • TOB-GRADIO-1/2:服务器CORS策略配置错误,在认证服务器场景中允许攻击者窃取访问令牌
  • TOB-GRADIO-3:基于GET的全读SSRF漏洞,可访问用户内部网络端点
  • TOB-GRADIO-10:任意文件类型上传漏洞,可托管XSS载荷
  • TOB-GRADIO-13:竞争条件漏洞,可重定向用户流量至恶意服务器
  • TOB-GRADIO-16:多个组件后处理函数存在任意文件泄露风险

分享功能安全

分享架构审计发现:

  • TOB-GRADIO-19:Gradio API服务器root权限RCE漏洞。通过nginx配置错误暴露Docker API(端口2376),攻击者可运行特权容器完全控制主机
  • TOB-GRADIO-11:frp客户端与服务器间通信缺乏强加密,可拦截修改传输数据

加固措施

审计后Gradio团队实施了全面改进:

  • 移除遗留代码,精简代码库
  • frp客户端与服务器通信实现加密传输
  • 在CI中集成Semgrep和CodeQL安全测试工具
  • 对关键函数实施模糊测试
  • 自动化基础设施部署替代手动操作

总结

本次审计凸显了AI/ML领域快速演进的开源项目定期安全评估的重要性。Gradio团队通过全面实施建议措施展示了对安全的高度承诺,包括系统性地预防整类漏洞的复发机制。

此为Trail of Bits与Hugging Face持续合作的一部分,此前已完成对其AI SafeTensors库的审计工作。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计