Ollama 目录遍历致代码执行漏洞 CVE-2024-37032

admin 2025年2月15日09:05:39评论44 views字数 2100阅读7分0秒阅读模式

免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,海底天上月及文章作者不为此承担任何责任。

漏洞描述

Ollama 是一款开源 AI 模型项目,可方便打包,加快部署 AI 模型流程。2024 年 6 月 24 日,互联网上披露 CVE-2024-37032 Ollama 目录遍历致代码执行漏洞。由于通常情况下 Ollama 没有认证授权,攻击者可利用相关 API 结合目录遍历漏洞造成远程代码执行,控制服务器。

要利用此漏洞,攻击者必须向 Ollama API 服务器发送特制的 HTTP 请求。在默认的 Linux 安装中,API 服务器绑定到 localhost,这大大降低了远程利用的风险。但是,在 docker 部署中,服务器以 root 权限运行并默认侦听 0.0.0.0,API 服务器是公开的,因此可以被远程利用。

通常,建议 将 Ollama 部署在反向代理后 以强制进行身份验证。

参考链接:

  • https://www.wiz.io/blog/probllama-ollama-vulnerability-cve-2024-37032

  • https://github.com/ollama/ollama/issues/849

  • https://github.com/Bi0x/CVE-2024-37032

漏洞影响
Ollama < 0.1.34
环境搭建
Docker 启动 Ollama 0.1.33 服务:
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama:0.1.33

环境启动后,访问 http://your-ip:11434/,此时 Ollma 0.1.33 已经成功运行。

Ollama 目录遍历致代码执行漏洞 CVE-2024-37032
漏洞复现
Ollama 公开了多个执行各种操作的 API endpoints,其中, /api/pull 可用于从 Ollama 下载模型。
Ollama 目录遍历致代码执行漏洞 CVE-2024-37032
默认情况下,服务器将从 Ollama 官方仓库 registry.ollama.com 下载模型,但也允许从私有仓库中获取模型。当下载模型时,通常会得到一个包含 manifest 文件的下载包或资源。在一个正常的 manifest 文件中,给定 layer 的 digest 字段应该与该层的哈希值一致。该字段还作为模型文件存储在磁盘的标识符,例如:
/root/.ollama/models/blobs/sha256-2049f5674b1e92b4464e5729975c9689fcfbf0b0e4443ccf10b5339f370f9a54

但是,模型文件存储到文件系统时未对 digest 字段进行校验,如果在该字段中构造一个 payload,将会导致服务器在处理 manifest 时读取并泄露 digest 字段指定的文件内容,通过该漏洞,攻击者可读取任意文件。

例如,当通过  http://<VICTIM>:11434/api/pull 从私有仓库中下载模型时,可能会获取一个恶意的 manifest 文件,该文件的 digest 字段中将包含路径遍历的 payload:

{"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","digest""../../../../../../../../../../../../../../../../../../../../../traversal","size"7020    }  ]}

因此,我们可以在服务器上部署一个恶意的 manifest 文件,例如 /root/.ollama/models/manifests/<ATTACKER>/library/manifest/latest ,当通过  /api/push 将该模型推送到远程仓库时,服务器将泄露 digest 字段中指定的文件内容。

Ollama 目录遍历致代码执行漏洞 CVE-2024-37032

实现远程代码执行的思路是破坏动态链接器/加载器 ld.so ,修改 /etc/ld.so.preload。通过任意文件写入,将恶意 .so 写入文件系统,然后使 ld.so.preload 包含恶意库。最后,访问 /api/chat 创建一个新进程,从而加载恶意 .so 实现远程代码执行。

漏洞修复
官方已经发布 0.1.34 修复该漏洞,建议升级至 0.1.34 及其以上版本。

关注公众号

点击关注下方名片进入公众号

原文始发于微信公众号(海底天上月):Ollama 目录遍历致代码执行漏洞 CVE-2024-37032

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月15日09:05:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Ollama 目录遍历致代码执行漏洞 CVE-2024-37032https://cn-sec.com/archives/3740153.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息