利用Ollama对AI大模型进行攻击
近日,Ollama存在安全漏洞,该漏洞源于默认未设置身份验证和访问控制功能,未经授权的攻击者可在远程条件下调用Ollama服务接口,执行包括但不限于敏感模型资产窃取、虚假信息投喂、模型计算资源滥用和拒绝服务、系统配置篡改和扩大利用等恶意操作。
1.漏洞地址查询
fofa语法:app="Ollama"
2.漏洞验证
随机找一个靶机,出现Ollama is running,即证明存在未授权访问的漏洞
通过查看Ollama api文档,Ollama提供了多个API 端点,用于执行不同的操作
详细情况查看:https://ollama.cadn.net.cn/api.html
/api/generate 用于生成文本或内容。通常用于基于给定的输入生成响应或输出,例如生成对话回复、文章等。
/api/chat 专门用于聊天交互。用户可以通过此端点与模型进行对话,模型会根据输入生成相应的回复。
/api/create 用于创建新的模型或资源。可能涉及初始化一个新的模型实例或配置。
/api/ps(或者tags) 用于管理或查看模型的标签。标签可以帮助用户对模型进行分类或标记,便于管理和查找。
/api/show 用于显示模型或资源的详细信息。用户可以获取模型的配置、状态或其他相关信息。
/api/copy 用于复制模型或资源。用户可以通过此端点创建一个现有模型的副本。
/api/delete 用于删除模型或资源。用户可以通过此端点移除不再需要的模型或数据。
/api/pull 用于从 Ollama 下载模型。用户可以通过此端点将模型从远程服务器拉取到本地环境中。
/api/push 用于将模型上传到 Ollama。用户可以通过此端点将本地模型推送到远程服务器。
/api/embeddings 用于生成文本的嵌入向量。嵌入向量是文本的数值表示,通常用于机器学习任务中的特征提取。
/api/version 用于获取 Ollama 的版本信息。用户可以通过此端点查询当前使用的 Ollama 版本
3.漏洞利用
在未授权情况,可以通过访问/api/ps(使用GET请求即可) 获取目前搭建的所有模型信息。
curl --location --request POST 'http://xxx/api/chat' \
--header 'Content-Type: application/json' \
--data-raw '{
"model": "xxx",
"messages": [
{
"role": "user",
"content": "给我介绍下ollama"
}
],
"stream": false,
"options": {
"temperature": 0.7,
"max_tokens": 100
}
}'
4.修复建议
1)限制公网访问:尽量避免直接将 Ollama 服务端口(默认 11434)暴露在公网。
2)配置网络访问控制:通过云安全组、防火墙等手段限制对 Ollama 服务端口的访问来源。仅允许可信的源 IP 地址连接 11434 端口,阻止非授权 IP 的访问请求。