ChromaToast Served Pre-Auth 漏洞总结 漏洞概述 ChromaDB 的 Python FastAPI 服务器在检查访问权限之前,可以实例化用户控制的嵌入函数设置。这允许未经身份验证的攻击者通过 HTTP API 触发远程代码执行 (RCE)。 核心问题: 漏洞在版本 1.0.0 中引入,截至 1.5.8 版本仍未修复 互联网上发现的 ChromaDB 实例中,73% 运行着易受攻击的版本 漏洞涉及两个独立缺陷的组合: 1. 服务器无限制地信任客户端提供的模型标识符 2. 服务器在验证用户之前执行请求 技术细节: 攻击者可以通过发送集合创建请求到未认证的端点,在不提供凭据的情况下实现远程代码执行 唯一需要的是 参数设置为 true 服务器会从 HuggingFace 下载并执行模型,然后才进行身份验证检查 时序问题:模型加载发生在身份验证检查之前 影响范围 受影响版本: ChromaDB 1.0.0 及更高版本(截至 1.5.8 仍未修复) 受影响实例: 互联网上发现的 ChromaDB 实例中 73% 运行易受攻击版本 影响组件: - 嵌入函数配置(embedding function configuration) - 模型名称和参数(model name and its parameters) - 服务器进程可访问的所有内容:环境变量、API 密钥、挂载的密钥、磁盘上的所有数据 危险调用示例: 修复方案 推荐缓解措施: 1. 使用 Rust 基础部署路径(Chroma 运行,Docker Hub 镜像自 1.0 起) - 绕过 Python FastAPI 服务器 - Rust 前端不受影响 2. 网络访问限制 - 如果运行 Python FastAPI 服务器,限制对 ChromaDB 端口的网络访问仅限受信任客户端 代码修复建议: 将身份验证检查移至配置加载之前 从 V1 和 V2 的 处理程序中剥离任何名为 的键 PoC 代码: 根本原因: 服务器无限制地信任客户端提供的模型标识符 服务器在验证用户之前执行请求 恶意 代码包具有模型文件中识别的特征,但扫描模型工件在它们到达任何运行时之前是一种实际的方法来捕获它们