从路径遍历到RCE:深度剖析Ollama CVE-2024-37032漏洞的利用链

张开发
2026/4/17 3:38:27 15 分钟阅读

分享文章

从路径遍历到RCE:深度剖析Ollama CVE-2024-37032漏洞的利用链
1. Ollama与CVE-2024-37032漏洞初探Ollama作为一款本地化运行大型语言模型的工具凭借其简洁的接口和丰富的预构建模型库在开发者社区中颇受欢迎。但正是这样一个旨在简化AI模型部署的工具在2024年曝出了一个足以让安全团队彻夜难眠的漏洞——CVE-2024-37032。这个漏洞的特别之处在于它完美演绎了如何从看似无害的路径遍历一步步演变成致命的远程代码执行RCE。我第一次在测试环境复现这个漏洞时整个过程就像在看一部精心设计的黑客电影。攻击者只需要构造一个特殊的模型文件通过Ollama的API接口上传就能让服务器乖乖交出/etc/passwd这样的敏感文件。更可怕的是这个漏洞的利用链非常清晰从digest字段的路径遍历开始到任意文件写入最终实现远程代码执行每一步都像是为攻击者铺好的红地毯。2. 漏洞原理深度解析2.1 digest字段的路径遍历魔法这个漏洞的核心在于Ollama对模型digest字段的验证存在严重缺陷。正常情况下digest应该是类似sha256:xxxx这样的哈希值但Ollama 0.1.33及以下版本的服务端代码竟然把这个字段直接拼接到了文件路径中而且没有任何防护措施。我尝试构造了一个恶意的manifest文件在digest字段中放入../../../../etc/passwd这样的路径穿越payload。令人惊讶的是服务器竟然真的把这个路径拼接到了根目录然后乖乖返回了系统的passwd文件。这就好比你把家庭住址写成隔壁小区/单元楼/我家快递员不仅不觉得奇怪还真的把包裹送到了别人家里。2.2 从文件读取到RCE的华丽转身单纯的路径遍历已经够危险了但CVE-2024-37032更厉害的地方在于它能够升级为完整的RCE。通过精心构造的模型文件攻击者可以利用pull操作将恶意模型下载到目标系统通过push操作将模型推送到注册表在模型处理过程中实现任意文件写入我曾在测试环境中成功利用这个漏洞在目标服务器的/root/.ollama目录下写入了一个恶意的shell脚本。由于Ollama服务通常以较高权限运行这意味着攻击者几乎可以为所欲为。这种从低危漏洞到高危漏洞的升级路径正是安全研究人员最需要警惕的。3. 漏洞复现实战指南3.1 环境搭建要点要复现这个漏洞首先需要搭建一个易受攻击的Ollama环境。我推荐使用Docker快速部署docker run -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama:0.1.33这里特别要注意版本号必须是0.1.33或更低因为0.1.34版本已经修复了这个漏洞。我在第一次尝试时不小心用了最新版结果所有攻击payload都失效了白白浪费了半天时间排查。3.2 攻击步骤详解完整的攻击流程可以分为以下几个关键步骤搭建恶意注册表服务器可以使用FastAPI快速实现构造包含路径遍历payload的模型manifest文件通过Ollama的API触发pull/push操作利用文件写入实现RCE这里有个小技巧在构造manifest文件时digest字段的路径穿越需要根据目标系统的目录结构精心设计。我在测试时发现Windows和Linux需要的../数量是不同的这直接关系到攻击能否成功。4. 漏洞防御与修复建议4.1 官方修复方案Ollama团队在0.1.34版本中修复了这个漏洞主要措施包括对digest字段进行严格验证禁止任何非哈希值内容在路径拼接前进行规范化处理消除路径遍历的可能性增加输入内容的过滤和检查我仔细对比了修复前后的代码发现新版本增加了一个sanitizeDigest函数专门用来处理这类问题。这种防御性编程的思路很值得学习。4.2 临时缓解措施如果由于某些原因无法立即升级可以考虑以下临时方案将Ollama服务运行在容器中限制其文件系统访问权限在网络层面限制对Ollama API的访问部署WAF规则拦截包含可疑路径遍历特征的请求不过我必须强调这些只是权宜之计最根本的解决方案还是尽快升级到安全版本。我在客户现场就遇到过因为拖延升级而导致的安全事故教训非常深刻。5. 漏洞研究的启示CVE-2024-37032给我们的最大启示是即使是设计用来简化开发流程的工具也可能成为攻击者的突破口。在研究这个漏洞的过程中我发现几个值得深思的点首先Ollama作为AI模型管理工具其安全设计显然没有跟上功能发展的步伐。开发者更多关注了易用性而忽视了安全性。这种失衡在新技术领域尤为常见。其次这个漏洞展示了现代攻击链的典型特征——多个看似低危的问题组合起来就能形成致命威胁。路径遍历本身可能只是中危但结合Ollama的运行环境和权限设计就变成了高危RCE。最后这个案例再次证明了防御纵深的重要性。如果Ollama在多个层级网络、主机、应用都有防护措施攻击者就很难一蹴而就。

更多文章