浅谈AI部署场景下的web漏洞
字数 1758 2025-08-29 08:29:41
AI本地化部署中的Web安全漏洞分析与防护指南
一、AI本地化部署概述
AI大模型本地化部署主要有以下几种方式:
- 第三方API调用:通过调用第三方API配合开源WebUI实现快速部署
- 私有化部署:使用如Ollama等工具进行本地部署,避免数据外泄
- Transformer微调部署:大型企业对模型进行微调后使用Transformer框架部署
二、AI部署中的Web安全漏洞分析
1. 模型下载环节漏洞
CVE-2024-37032 (Prollama漏洞)
- 漏洞原理:Ollama服务在下载模型时未充分校验Docker注册中心URL
- 攻击链:
- 攻击者构造恶意URL使Ollama访问攻击者服务器
- 利用目录穿越漏洞将模型下载到非预期目录
- 通过
/api/push和/api/pull实现任意文件读写 - 通过
ld_preload劫持和写入so文件实现RCE
2. 模型加载环节漏洞
Pickle反序列化问题
- 背景:PyTorch/TensorFlow/Numpy使用Pickle序列化存储模型
- 风险点:
- Pickle反序列化会直接执行opcode操作码
- 自动执行
__reduce__()函数可能导致RCE - 字节实习生投毒事件就是利用此漏洞干扰训练结果
防护措施:
- 权重加载模式:PyTorch引入
weight_only参数,仅加载模型权重 - 白名单机制:只允许加载预定义的安全类
- 操作码过滤:限制GLOBAL/REDUCE等危险操作码
- 魔术方法限制:禁用
__reduce__、__APPEND__等危险方法 - 高危模块隔离:彻底封锁os、sys等模块
ModelScan防护方案:
- 黑名单策略检测危险操作
- 禁用
getattr()/setattr()等属性操作 - 限制函数调用范围
3. Keras模型训练漏洞
Lambda层代码执行
- 漏洞原理:Keras的Lambda层允许执行任意代码
- 攻击示例:
from tensorflow import keras
import os
import base64
malicious_code = "import os;os.system('calc')"
encoded_code = base64.b64encode(malicious_code.encode()).decode()
def malicious_lambda(x):
exec(base64.b64decode(encoded_code))
return x
inputs = keras.Input(shape=(1,))
outputs = keras.layers.Lambda(malicious_lambda)(inputs)
model = keras.Model(inputs, outputs)
model.save("malicious_model.h5")
防护措施:
- 显式注册机制:使用
@keras.saving.register_keras_serializable()装饰器 - 强制实现
get_config()方法 - 严格校验函数来源和模块名
YAML反序列化漏洞(CVE-2021-37678)
- 旧版本Transformer未及时更新PyYAML组件导致RCE
4. 二次开发框架越权漏洞
sd-webui案例
-
漏洞表现:
/sdapi/v1/options路由可读写服务器配置/sdapi/v1/extensions泄露插件信息/sdapi/v1/sd-models泄露模型路径- 组合利用可导致任意文件读取
-
攻击链:
- 通过API获取扩展和模型信息
- 构造路径访问敏感文件:
/paintingStudioFree/file=/home/study/stable-diffusion-webui/models-ckpt/xxx.safetensors - 读取插件源码进行审计
Ollama未授权访问(CNVD-2025-04094)
/api/tags等关键路由未做鉴权- 二次开发时如未添加权限控制会导致信息泄露
5. 插件加载漏洞
风险点:
- 默认信任从网络下载的插件
- 恶意插件可导致主机沦陷
- 智能体访问第三方API可能引发SSRF
三、防护建议
-
模型下载安全
- 严格校验下载源URL
- 限制模型存储目录权限
- 及时更新Ollama等部署工具
-
模型加载安全
- 优先使用
weight_only模式 - 谨慎使用
_add_safe_globals()添加自定义类 - 部署ModelScan等安全扫描工具
- 优先使用
-
框架安全
- 二次开发时添加完善的鉴权机制
- 禁用不必要的API路由
- 对敏感操作实施二次验证
-
插件安全
- 建立插件审核机制
- 限制插件网络访问权限
- 隔离插件运行环境
-
持续监控
- 关注AI组件安全更新
- 定期进行安全审计
- 建立模型文件完整性校验机制
四、总结
AI本地化部署中的Web安全风险主要集中在模型文件处理、框架API设计和插件管理三个方面。通过实施最小权限原则、严格输入校验、完善鉴权机制和持续安全监测,可以有效降低这些风险。开发者应特别警惕反序列化漏洞和越权访问问题,在享受AI便利的同时确保系统安全。