IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Ollama 未授权访问漏洞,攻击者可以下载或删除私有模型文件

    C1G发表于 2025-03-03 05:52:17
    love 0

    Ollama 是一个开源的大语言模型(LLM)运行环境和工具集,旨在帮助开发者轻松部署、管理和使用模型(如 DeepSeek 等)。

    Ollama 存在未授权访问漏洞,攻击者可以直接访问敏感接口进行读取、下载或删除私有模型文件,或滥用模型推理资源等高危操作。

    攻击者只需访问服务端口(默认 11434)即可调用敏感功能接口,进而读取、下载或删除私有模型文件,或滥用模型推理资源等。

    直接请求api路径即可,这里查看都有哪些模型

    curl http://127.0.0.1:11434/api/tags
    这个接口列出 Ollama 提供的 LLM 模型。

    该接口对应的处理函数是ListHandler,可以看到,未进行任何权限,直接返回模型。

    func (s \*Server) ListHandler(c \*gin.Context) {  
    ms, err :\\= Manifests(true)  
    if err != nil {  
    c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})  
    return  
    }  
    ​  
    models :\\= \[\]api.ListModelResponse{}  
    for n, m :\\= range ms {  
    var cf ConfigV2  
    ​  
    if m.Config.Digest != "" {  
    f, err :\\= m.Config.Open()  
    if err != nil {  
    slog.Warn("bad manifest filepath", "name", n, "error", err)  
    continue  
    }  
    defer f.Close()  
    ​  
    if err :\\= json.NewDecoder(f).Decode(&cf); err != nil {  
    slog.Warn("bad manifest config", "name", n, "error", err)  
    continue  
    }  
    }  
    ​  
    // tag should never be masked  
    models \\= append(models, api.ListModelResponse{  
    Model: n.DisplayShortest(),  
    Name: n.DisplayShortest(),  
    Size: m.Size(),  
    Digest: m.digest,  
    ModifiedAt: m.fi.ModTime(),  
    Details: api.ModelDetails{  
    Format: cf.ModelFormat,  
    Family: cf.ModelFamily,  
    Families: cf.ModelFamilies,  
    ParameterSize: cf.ModelType,  
    QuantizationLevel: cf.FileType,  
    },  
    })  
    }  
    ​  
    slices.SortStableFunc(models, func(i, j api.ListModelResponse) int {  
    // most recently modified first  
    return cmp.Compare(j.ModifiedAt.Unix(), i.ModifiedAt.Unix())  
    })  
    ​  
    c.JSON(http.StatusOK, api.ListResponse{Models: models})  
    }  

    大模型拉取函数,没有进行任何权限验证。
    也可以删除指定模型。

    修复建议

    方法一

    最好的修复方法肯定是修改代码逻辑,给 Ollama API 添加认证的需求。当然这需要原作者的配合。

    方法二

    对web服务器配置进行修改,这里拿nginx进行举例:

    对访问接口的请求,添加一个简单的密码验证。

    server {
    listen 11434;
    ​
    location / {
    auth_basic "Restricted Content";
    auth_basic_user_file /etc/nginx/.htpasswd;
    ​
    proxy_pass http://192.168.1.100:11434;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    }

    漏洞分析

    https://forum.butian.net/index.php/article/670

    The post Ollama 未授权访问漏洞,攻击者可以下载或删除私有模型文件 first appeared on C1G军火库.



沪ICP备19023445号-2号
友情链接