漏洞介绍
Ollama是一个专为本地机器设计的开源框架,旨在简化大型语言模型(LLM)的部署和运行过程。它提供了一套工具和命令,使用户能够轻松地下载、管理和运行各种语言模型,包括LLaMA、LLaVA等流行模型。Ollama通过优化设置和配置细节,如GPU使用情况,提高了模型运行的效率,并且其代码简洁明了,运行时占用资源少,使得在本地高效地运行大型语言模型成为可能。
在 Ollama 0.1.34 之前的版本 中,在获取模型路径时,未对摘要(digest)的格式进行验证(应为包含 64 个十六进制字符的 SHA256 值),因此在处理 TestGetBlobsPath
测试用例时会出现问题,例如:十六进制字符少于 64 个、超过 64 个、或者摘要字符串以 ../
开头。
漏洞条件
•Ollama < 0.1.34
环境搭建
docker-compose up -d
访问 http://your-ip:11434 即可
漏洞复现
具体脚本见文末
根据Ollama机制,/api/pull
接口默认可以从Ollama官方registry拉取镜像,当然我们也可以选择从自己构建的私人服务器上拉取镜像。
首先运行事先构造好的恶意registry服务器:evilRegServer.py
执行pull操作
执行push操作
发现成功读取到/etc/passwd
内容
也可以直接执行漏洞利用脚本POC-CVE-2024-37032.py读取到/etc/passwd
:
漏洞修复
•升级至最新版本(0.1.34及以上版本)
原文始发于微信公众号(天翁安全):deepseek本地部署工具---ollama任意文件读取漏洞复现
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论