漏洞原理

近期由于Deepseek爆火,大部分企业和个人都开始部署AI。Ollama是一个本地私有化部署大语言模型(LLM,如DeepSeek等)的运行环境和平台,简化了大语言模型在本地的部署、运行和管理过程,具有简化部署、轻量级可扩展、API支持、跨平台等特点,在AI领域得到了较为广泛的应用。

近日,Ollama存在安全漏洞,该漏洞源于默认未设置身份验证和访问控制功能,未经授权的攻击者可在远程条件下调用Ollama服务接口,执行包括但不限于敏感模型资产窃取、虚假信息投喂、模型计算资源滥用和拒绝服务、系统配置篡改和扩大利用等恶意操作。

影响版本

Ollama所有版本均受此漏洞影响。

漏洞复现

1. FOFA

fofa语法:app="Ollama"

随便找一个靶机,出现Ollama is running,即证明存在未授权访问的漏洞

2. 漏洞验证

通过查看Ollama api文档,Ollama提供了多个API 端点,用于执行不同的操作

详细情况查看:API 参考文档 -- Ollama 中文文档|Ollama官方文档

  • /api/generate 用于生成文本或内容。通常用于基于给定的输入生成响应或输出,例如生成对话回复、文章等。
  • /api/chat 专门用于聊天交互。用户可以通过此端点与模型进行对话,模型会根据输入生成相应的回复。
  • /api/create 用于创建新的模型或资源。可能涉及初始化一个新的模型实例或配置。
  • /api/ps(或者tags) 用于管理或查看模型的标签。标签可以帮助用户对模型进行分类或标记,便于管理和查找。
  • /api/show用于显示模型或资源的详细信息。用户可以获取模型的配置、状态或其他相关信息。
  • /api/copy 用于复制模型或资源。用户可以通过此端点创建一个现有模型的副本。
  • /api/delete 用于删除模型或资源。用户可以通过此端点移除不再需要的模型或数据。
  • /api/pull 用于从 Ollama 下载模型。用户可以通过此端点将模型从远程服务器拉取到本地环境中。
  • /api/push 用于将模型上传到 Ollama。用户可以通过此端点将本地模型推送到远程服务器。
  • /api/embeddings 用于生成文本的嵌入向量。嵌入向量是文本的数值表示,通常用于机器学习任务中的特征提取。
  • /api/version 用于获取 Ollama 的版本信息。用户可以通过此端点查询当前使用的 Ollama 版本。

3. 漏洞利用

在未授权情况,可以通过访问/api/ps(使用GET请求即可) 获取目前搭建的所有模型信息。

通过返回信息可以看到采用的是qwq:latest模型,通过刚才我们知道的接口端点信息,我们可以调用/api/chat(使用POST请求)来完成聊天请求,消耗资源。

通过引导deepseek回答问题的过程中也能造成一些信息的泄露

所以在未授权的情况下,其他的接口都是可以用的,危害极大,可以通过调用那些危险接口进行操作,可对模型进行创建或删除的操作

防御措施

  1. 限制公网访问:尽量避免直接将 Ollama 服务端口(默认 11434)暴露在公网。
  2. 配置网络访问控制:通过云安全组、防火墙等手段限制对 Ollama 服务端口的访问来源。仅允许可信的源 IP 地址连接 11434 端口,阻止非授权 IP 的访问请求。
Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐