Gradio 5 安全审查
Hugging Face 与网络安全公司 Trail of Bits 合作,对 Gradio 5 进行独立安全审计。在此过程中识别的所有安全风险均已在 Gradio 5 发布前得到缓解和修复,确保使用该库构建的机器学习应用遵循 Web 安全最佳实践,无需开发者手动配置复杂的安全策略。
主动安全审计目标
为了确保 Hugging Face Spaces 上超过 470,000 个 Gradio 应用的安全,Hugging Face 将从被动修补模式转变为主动审计。Trail of Bits 对 Gradio 代码库在四种主要风险场景下进行分析:
- 本地执行:在开发者本地机器上运行的应用。
- 服务器部署:部署在 Hugging Face Spaces 或其他远程服务器上的应用。
- 服务器部署:通过 Gradio 内置分享链接共享的应用。
- 供应链:Gradio CI 流水线中的漏洞。
主要安全发现与缓解措施
Trail of Bits 在四种场景中识别出多个关键漏洞。所有这些漏洞已在 Gradio 5.0 版本中得到解决。
本地应用
发现服务器的 CORS(跨域资源共享)策略配置错误(TOB-GRADIO-1 和 TOB-GRADIO-2)。在已认证服务器的上下文中,这可能导致攻击者通过恶意网站窃取访问令牌并接管用户账户。
已部署的应用
在 Hugging Face Spaces 或其他服务器上部署的应用中识别出若干漏洞:
- SSRF:一种基于 GET 的完整读取服务器端请求伪造(SSRF),允许攻击者向任意端点发起请求并读取响应,包括内部网络(TOB-GRADIO-3)。
- XSS:任意文件类型上传可用于托管跨站脚本(XSS)负载,可能导致已认证服务器的账户被接管(TOB-GRADIO-10)。
- 竞争条件:存在竞争条件,攻击者可能将用户流量重定向到其自己的服务器,以窃取上传的文件或聊天机器人对话(TOB-GRADIO-13)。
- 文件泄漏:某些组件中的特定后处理函数在简单的服务器配置下可能泄漏任意文件(TOB-GRADIO-16)。
共享应用
与 Gradio 内置分享链接相关的风险包括:
- 远程代码执行(RCE):nginx 配置错误暴露了 Gradio API 服务器上未认证的 Docker API,允许以 root 用户权限进行 RCE。这可能被用于将 frp 隧道重定向到恶意服务器,以记录用户流量(TOB-GRADIO-19)。
- 加密:frp-client 与 frp-server 之间的通信缺乏强加密,导致数据被拦截和篡改(TOB-GRADIO-11)。
CI 流水线与供应链
在 Gradio CI 流水线中识别出供应链风险:
- GitHub Actions:多个工作流使用了固定到标签或分支名称而非完整提交 SHA 的第三方动作,存在动作被悄然修改以及潜在机密泄露的风险(TOB-GRADIO-25)。
- Runner 内存:一位 GitHub 安全研究员报告称,GitHub actions 可能通过对 GitHub runner 的内存转储实现不受信任代码执行和机密泄露。
未来安全态势
为防止回退并识别新漏洞,Hugging Face 已在 Gradio 开发生命周期中集成了多种安全工具:
- 安全单元测试 和 模糊测试,专门用于发现漏洞。
- 在 CI 流水线中使用 静态分析工具(如 Semgrep)来检测常见安全问题。
- 持续合作 与安全社区共同识别并缓解风险。
Sources
- OriginalA Security Review of Gradio 5