K3ysTr0K3R/CVE-2024-1561
GitHub: K3ysTr0K3R/CVE-2024-1561
该项目是 CVE-2024-1561 的 PoC,用于验证 Gradio 4.13.0 之前版本中 /component_server 端点验证不足导致的任意文件读取漏洞。
Stars: 0 | Forks: 0
# CVE-2024-1561 - Gradio 任意文件读取
**CVE-2024-1561** 是一个影响 **4.13.0** 之前版本的 **Gradio** 的任意文件读取漏洞。Gradio 是一个流行的 Python 框架,用于快速为机器学习模型和 AI 应用构建 Web 界面。
该漏洞的存在是因为 `/component_server` endpoint 没有正确限制可以调用内部 `Component` 类的哪些方法。攻击者可以滥用此行为来调用从未打算通过 HTTP 暴露的方法。
其中一个方法是 `move_resource_to_block_cache`,它允许将本地文件系统中的文件复制到 Gradio 的临时缓存目录中。一旦文件被复制,就可以通过 `/file` endpoint 访问它,从而允许攻击者获取其内容。
尽管该漏洞不能直接提供远程代码执行,但它可能会暴露服务器上的敏感文件,并可能被用于获取凭据、配置文件、API 密钥、token 或其他对进一步攻击有用的信息。
## 受影响版本
- Gradio < **4.13.0**
**4.13.0** 及更高版本包含必要的安全检查,以防止任意方法调用。
## 根本原因
该问题源于 `/component_server` endpoint 内部的验证不足。
Gradio 没有将请求限制在可调用函数的安全列表中,而是允许攻击者指定属于组件实例的任意方法名。
由于内部方法:
```
move_resource_to_block_cache()
```
接受文件系统路径作为输入,攻击者可以指示应用程序缓存服务器上任何可读的文件。
一旦被缓存,该文件就会通过 Gradio 的正常文件服务功能被暴露出来。
## 漏洞利用过程
一次成功的攻击通常遵循以下步骤:
1. 查询 `/config` endpoint。
2. 获取有效的组件 ID。
3. 向 `/component_server` 发送请求。
4. 调用 `move_resource_to_block_cache` 方法。
5. 提供目标文件的路径(例如 `/etc/passwd`)。
6. 在服务器响应中接收临时缓存路径。
7. 通过 `/file` endpoint 下载缓存的文件。
此过程允许远程检索 Gradio 进程可读取的任意文件。
## 示例请求
```
POST /component_server HTTP/1.1
Host: target
Content-Type: application/json
{
"component_id": "3",
"data": "/etc/passwd",
"fn_name": "move_resource_to_block_cache",
"session_hash": "aaaaaaaaaaa"
}
```
如果成功,Gradio 将返回缓存文件的位置。
然后攻击者可以请求:
```
GET /file=/tmp/gradio//passwd HTTP/1.1
Host: target
```
来获取其内容。
## 安全影响
成功利用该漏洞可能允许攻击者读取敏感文件,包括:
- `/etc/passwd`
- 私有 SSH 密钥
- 环境变量文件(`.env`)
- API token
- 云端凭据
- 应用程序配置文件
- 数据库凭据
- 源代码
- 身份验证机密
影响程度取决于 Gradio 应用程序的权限。
## 缓解措施
要修复此漏洞:
- 将 Gradio 升级到 **4.13.0** 或更高版本。
- 避免将 Gradio 应用程序直接暴露在公共 Internet 上。
- 尽可能要求身份验证。
- 使用反向代理或防火墙限制访问。
- 以最低的必要权限运行 Gradio。
- 避免将敏感凭据存储在应用程序进程可访问的位置。
## 参考
- CVE: https://nvd.nist.gov/vuln/detail/CVE-2024-1561
- 补丁: https://github.com/gradio-app/gradio/pull/6884
## 免责声明
本仓库仅用于**教育目的**、**安全研究**和**授权的渗透测试**。在对您不拥有或未经授权评估的系统进行测试之前,请务必获得明确的许可。
标签:AI安全, Chat Copilot, Gradio, Homebrew安装, Web安全, 任意文件读取, 安全助手, 蓝队分析, 逆向工具