别让DeepSeek坑了你!本地部署模型真的安全吗?
1. 前言
由于Chatgpt引发了全球繁荣,DeepSeek(DeepSeek)迅速上升,并已成为另一种惊人的AI产品。根据国内AI产品排名的最新统计数据,在推出后仅20天内,日常活跃用户的数量超过了2000万,达到2215万。这种热潮不仅使全世界的DeepSeek流行,而且导致其在线服务面临前所未有的挑战:频繁的大规模DDOS交通攻击导致了网页和API服务的中断,甚至使用户甚至无法完成一段时间的注册。同时,由于在线用户的激增,该官员经常显示“服务器很忙,请稍后再试”的提示,这使许多用户叹了口气。
面对如此热情的用户群,许多人已经开始探索当地部署DeepSeek模型的方法。但是,DeepSeek模型文件的完整版本很大,达到671B,并且对视频内存的要求非常高。为此,许多教程建议使用蒸馏小型模型,例如Qianwen和Llama(例如32B和70B版本)进行本地部署。

尽管市场充满了各种部署指南,但本文的重点不是技术细节,而是作者在试验过程中发现的一些潜在安全风险。由于部署模型的机器通常具有较大的计算能力,因此这些风险可能会对数据安全性和系统稳定性构成严重威胁,不应低估。
2. 你的Ollama安全么?
Ollama是一个开源框架,旨在在本地机器上方便地部署和运行大型语言模型(LLM)。在众多教程中,奥拉马(Ollama)以一键式部署非常受欢迎。 Ollama与Docker相似,还拥有一个模型存储库,其中包含一系列预训练的大语言模型。用户可以直接选择这些模型以应用于自己的应用程序,而无需从头开始培训或自己找到模型源。同时,Ollama还提供了一组简单的API,使开发人员可以轻松地创建,运行和管理大型语言模型实例,从而降低与模型交互的技术障碍。在Ollama的配置中,可以调整API绑定情况。您可以看到默认情况下,Ollama API接口绑定到LocalHost:11434:

通过API,您可以直接与Ollama和部署的大型模型进行交互。以下是检查当前机器运行模型:

使用API向大型模型提出经典问题:一天中不同时间的天空是什么颜色?
1
curl -x POST http://localhost:11434/api/oferate -h'content -type:应用程序/json'-d'-d'-d'{\': \': \'deepSeek -r1:70b使用json \',\'格式\': \'json \',\'stream \': false}'

可以看出,Ollama的界面未经过身份验证,可以直接访问。为了促进呼叫,一些开发人员直接暴露了API端口。端口接触到公共网络后,攻击者可以直接使用接口来调用该模型,消耗资源并造成浪费。使用FOFA搜索,我看到Ollama API的公共网络暴露次数约为4W+。搜索语法如下:
1
身体='Ollama正在运行'

使用Ollama API接口在国外暴露,直接调用DS模型:

此外,根据Ollama的官方文档,使用API还可以推动,拉动和删除模型,这些模型更有害:

在某些古老的Ollama版本中,仍然存在由路径交叉引起的RCE问题。 Wiz研究团队已经完成了相关的研究,并且不会在此处详细说明。链接:https://www.wiz.io/blog/probllama-ollama-vulnerability-cve-2024-37032
API未授权的问题是一个严重的问题,为什么Ollama没有正式解决它?在对文档进行了深入分析之后,发现正式建议的部署方法是使用反向代理来限制访问,例如通过NGINX通过NGINX进行过滤:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
服务器{
听8080; #代理听力端口
server_name your_server_ip_or_domain;
地点/{
PROXY_PASS http://127.0.0.1:11434; #ollama默认运行端口
proxy_set_header主机$主机;
PROXY_SET_HEADER X-REAL -IP $ remote_addr;
proxy_set_header x-forwarded-for $ proxy_add_x_forwarded_for;
proxy_set_header x-forwarded proto $方案;
#访问限制- 仅允许特定的IP访问
允许192.168.1.100;
否认一切;
}
}
不仅Ollama,Common LM Studio也有类似的问题。 LM Studio使用API与本地模型进行交互:

在FOFA上搜索相关资产:

使用未经授权的API与模型交互:

3. 模型保住了,就真的安全了么?
通过Ollama部署了本地LLM模型。假设我们还保护了Ollama API接口,它真的很安全吗?尽管Ollama可以在本地部署模型服务供其他程序拨打,但其本机对话接口是在命令行/API中进行的,并且用户无法轻易与AI模型进行交互。因此,开发人员通常使用第三方WebUI应用程序使用Ollama来获得更好的体验。总体结构如下:

常见的UI框架包括:Lobechat,Open WebUI,Enchanted,Chatbox等。作者选择了更流行的Lobechat框架作为扩展它的研究对象。作为开源LLMS WebUI框架,Lobechat支持全球大型语言模型,并提供了精美的用户界面和出色的用户体验。该框架支持通过本地Docker运行,也可以在Vercel和Zeabur等多个平台上部署。用户可以通过配置接口地址轻松实现集成。
根据官方的Lobechat文档,它提供了一个Docker映像,可以在几分钟内部署自己的聊天机器人。快速部署模式:
https://github.com/lobehub/lobe-chat/blob/main/main/readme.zh-cn.md#b-pime4%Bd%Bf%Bf%E7%94%94%A8- docker-docker-docker-%E9%83%83%A8%E7%Bd%B2;

部署的屏幕截图:

可以看出,默认情况下,整个系统不执行身份验证,用户可以直接使用前端页面。仔细的读者可能已经看到,运行Docker映像时,会有一个access_code字段。根据官方文件,该字段是该应用程序的解锁密码。特定功能是,使用聊天功能时,用户需要输入密码以启用它:

这里有两个问题:
1。如果用户不配置Access_Code,则攻击者可以直接调用LLM进行聊天。
2。如果用户已配置了Access_Code,但使用官方LOBE66默认密码,则攻击者还可以获得控制。
然后查看在公共网站上的Lobechat的曝光:title='lobechat'

可以看出,在公共网络上部署了约1W+资产。根据先前的风险点,请尝试致电:

此外,还有一些类似的前端平台,例如Llama Coder:title=“ Llama Coder”

Serge:title=='Serge-由Llama提供支持'

4. 设置了复杂密码,这回该安全了吧!?
根据上述风险点,即使我们为前端设置了一个复杂的密码以保护LLM免受其他用户的要求,这是否真的是万无一失的?进一步探讨了Lobechat正式提供的部署方法,还有一个高级部署模式Docker-Compose:
lobe-chat/docker-compose/local/docker-compose.yml at main · lobehub/lobe-chat
🤯 Lobe Chat - an open-source, modern-design AI chat framework. Supports Multi AI Providers( OpenAI / Claude 3 / Gemini / Ollama / DeepSeek / Qwen), Knowledge Base (file upload / knowledge managemen...

这种部署方法与企业/组织的内部使用相结合,用户授权均匀管理。官方CAS申请是:Casdoor。 Casdoor是一个轻巧的身份身份验证和授权平台,支持多个协议(例如OIDC,OAUTH2,SAML,CAS等),并提供单个登录(SSO)功能。它支持各种登录方法,包括密码登录,SMS/邮件验证代码登录和社交登录(例如Google,Github等)。
部署屏幕截图如下:


如果统一身份身份验证平台中存在漏洞,则后果将无法想象。在最近的漏洞警告工作中,作者跟踪了任意用户为Casdoor≤1.811.0增加了漏洞。在没有授权的情况下,攻击者可以通过添加用户界面添加管理员用户来获得系统控制。当地环境繁殖:

添加管理员用户并在Casdoor统一身份认证背景中登录:

在这一点上,系统级控制权+LLM操控权限已降低了双重下降,敏感的模型和计算能力已“三维收获”。
当在公共网络上进一步浏览资产时,发现大约LLM代理聚合平台(收集全球AI模型API,灵活地选择了诸如OpenAI,GPT,GPT,Claude等的顶级模型API,以实现敏捷开发),以实现敏捷开发,并采用Lobechat部署,并使用CAS Unifiend Identity身份验证来实现付费用户和免费用户之间的角色。一旦丢失了这样的平台,攻击者就可以在整个平台上获得SK资源,并致电任何模型API,从而造成巨大的经济损失。
公众
5. 进阶使用:模型微调工具也不安全吗?
,大型型号的预培训或全面调查是无法实现的。结果,已经创建了各种参数有效的微调技术,使科学研究人员或普通开发人员有机会尝试微型模型。 模型微型调整是指使用较小,更具体的数据集对预训练的大语言模型(LLMS)进行进一步培训,以增强其在特定领域的任务上的性能。微调的目的是将一般模型转换为专用模型,弥合一般预训练模型和特定应用需求之间的差距,并确保语言模型更接近人类的期望。常见的微调工具包括:Llama-Factory,Unsploth,Swift,Firfly,Xtuner等。

以骆驼金属为例为例。 Llama-Factory提供了Web UI模式,该模式可以使用零代码微调一百多个大型型号。 WebUI主要分为四个接口:培训,评估和预测,对话和出口。命令启用Web UI:
1
LlamaFactory-Cli Webui
使用指纹在公共网站上搜索开放的webui:body='llama板',也存在同样的问题。

6. 模型应用部署的“最后一击”
进行微调后,需要将其部署为用户使用的应用程序。 Gradio是一个创新的Web平台,使开发人员能够为其模型构建交互式演示界面。该平台通过提供易于使用的界面来简化模型的演示过程,从而使非专业用户可以轻松体验和利用尖端的机器学习技术。用户可以通过简单的Python代码快速创建交互式Web应用程序界面。 Gradio支持各种输入和输出选项,包括文本,图像和音频等数据类型。该产品不仅支持Jupyter笔记本电脑的嵌入,而且还允许其他用户通过生成的公共链接进行远程交互,或者托管该应用程序在拥抱面前。Gradio应用指纹:ICON_HASH='55115683'

以其中一个为例,请致电后端模型:

实际上,该官员通过提供简单的身份验证来增强Gradio的安全性,但是仍然有很多实例未被授权在公共网络上暴露:
1
2
3
4
5
6
7
8
9
演示
.Queue(concurrency_count=3)
.launch(server_name='0.0.0.0',
server_port=8082,
show_api=false,
共享=false,
inbrowser=false,
auth=('zhangsan','123456'),
)