ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

什么是模型序列化攻击?攻击者给AI模型投毒的3个步骤全解析,附ModelScan防御方案

什么是模型序列化攻击?攻击者给AI模型投毒的3个步骤全解析,附ModelScan防御方案 什么是模型序列化攻击攻击者给AI模型投毒的3个步骤全解析附ModelScan防御方案【免费下载链接】modelscanProtection against Model Serialization Attacks项目地址: https://gitcode.com/gh_mirrors/mo/modelscan什么是模型序列化攻击一句话讲清楚AI模型保存为文件序列化时恶意代码混进了模型文件谁加载模型谁就中招。ModelScan 是一个开源的 AI 模型扫描工具能在不加载模型的情况下找出这类投毒模型。下面带你完整看懂攻击者投毒 AI 模型的3个步骤以及一套可直接落地的 ModelScan 防御方案。一、什么是模型序列化攻击数据科学家训练完模型后需要把模型保存下来分享给团队或生产环境——这个把模型写进文件的过程就叫序列化。常见的模型文件格式有 Pickle、HDF5H5、TensorFlow SavedModel、ONNX 等。问题在于很多格式允许在模型里存放代码。当你执行torch.load(model.pkl)加载模型时框架读到的不只是权重还会执行文件里嵌入的代码——加载模型的那一瞬间攻击就完成了而模型的行为看起来完全正常。这就是模型序列化攻击也叫代码注入攻击的核心思路堪称现代的特洛伊木马。一个被投毒的模型可以做到4件事攻击类型能做什么凭证窃取偷走机器上的云凭证读写其他系统的数据数据窃取偷走发送到模型的请求数据数据投毒篡改模型完成任务后流出的数据模型投毒直接篡改模型自身的输出结果各序列化格式的风险等级并非所有格式都同样危险常见模型序列化方式的风险对比如下序列化方式常见程度攻击风险Pickle 及变体cloudpickle/dill/joblib很高很高可任意代码执行TensorFlow SavedModel高中少量磁盘 I/O 算子可被利用H5Keras高低Keras Lambda 层除外仅推理格式ONNX 等中低仅权重格式Safetensors 等低很低 各格式攻击面的完整原理讲解可参考项目文档docs/model_serialization_attacks.md二、攻击者给AI模型投毒的3个步骤步骤一找到ML模型存放的位置攻击的起点不是某个模型文件而是存放模型的系统——模型注册表Model Registry或制品存储。常见的有 MLflow、Kubeflow、Aim 等开源系统以及 SageMaker、Vertex AI 等商业服务。只要能往模型注册表写入攻击者就拿到了投毒的入场券。步骤二渗透模型注册表渗透的路径主要有三种钓鱼Phishing、社会工程Social Engineering以及利用 MLOps 系统中未修补的漏洞。步骤三向ML模型注入恶意代码这一步反而是最简单的攻击者读取正常模型 → 注入恶意代码 → 回写受感染的模型。一个被感染的模型可能引发模型窃取、数据外泄、勒索软件、权限提升等一系列后续攻击。这种攻击最阴险的地方在于隐蔽性被投毒的模型依然正常工作。举个真实示例——一个情感分析模型照常输出正确的预测分数但 AWS 访问密钥已经在后台被静默窃取项目中 notebooks/ 目录收录了覆盖 PyTorch、TensorFlow、Keras、XGBoost 四类模型的完整攻击演示如 pytorch_sentiment_analysis.ipynb可动手复现整个投毒与检测过程。三、ModelScan防御方案不运行模型也能揪出投毒代码如果加载模型本身就会触发攻击ModelScan 如何安全地检查它答案很直接它根本不加载模型。ModelScan 像读取字符串一样一个字节一个字节地读取文件内容静态查找危险代码签名——全程不执行模型中的任何代码既安全又快速大多数模型几秒内即可扫完。1. 一键安装ModelScanpip install modelscan如果需要扫描 TensorFlow SavedModel 或 H5 模型加上对应的额外依赖pip install modelscan[tensorflow, h5py]2. 一条命令扫描模型modelscan -p /path/to/model.pklModelScan 支持本地目录、Hugging Face 模型库、URL 三种模型来源整体流程如下扫描完成后结果会按严重等级给出风险排名例如在一个 TensorFlow 模型中发现了ReadFile和WriteFile两个高危算子——意味着攻击者可以用它读取并外传 AWS 凭证这种模型坚决不能使用3. 看懂4个严重等级Critical/High/Medium/Low等级含义典型示例 CRITICAL含可直接执行代码的危险算子exec、eval、os、subprocess、socket、open HIGH不能直接执行代码但可被利用webbrowser、httplib、TF ReadFile/WriteFile MEDIUM未知算子或危险实践Keras Lambda 层、自定义算子 LOW预留等级暂无归类完整判定规则见 docs/severity_levels.md。 扫出问题后第一步是联系模型作者确认原因——有些数据科学家确实会往模型里嵌代码方便复现但这本身就给攻击留了后门需要谨慎评估。四、把模型扫描接入MLOps流水线临时扫描只是第一步。模型在 MLOps 生命周期中要经历加载、训练、发布、部署多个环节建议在3个关键点执行模型扫描加载预训练模型前扫描——防止被污染模型影响建模与开发环境训练完成后扫描——检测针对新模型的供应链攻击部署到端点前扫描——确认模型在存储阶段未被篡改。接入 CI/CD 时可以直接利用 ModelScan 的退出码0无风险、1发现风险、2扫描出错、3未提供受支持的文件、4参数错误——流水线中遇到非0退出码直接拦截即可。五、安全序列化的3条额外建议想在源头降低风险这3条建议值得跟进优先避免 PicklePyTorch 模型可导出为 ONNXTensorFlow 使用原生 SavedModelKeras 使用 H5 并避开 Lambda 层加载前校验完整性为模型保存校验和Checksum或加密签名加载时验证文件未被篡改传输与存储加密S3 桶加密 全程 TLS/mTLS防止模型在流转中被读取或替换。另外两点同样重要模型注册表必须开启认证访问很多公网上的 MLflow 实例裸奔导致私有模型直接暴露并用 IAM 实施最小权限控制。写在最后模型序列化攻击是 AI 时代最被低估的风险之一攻击步骤少、成本低、隐蔽性极强。你的防线可以归纳为三步——用安全的序列化格式、加载模型前必扫、把 ModelScan 嵌入流水线。ModelScan 的核心扫描逻辑位于 modelscan/modelscan.pyPickle、SavedModel、H5、Keras 各格式的扫描器实现都在 modelscan/scanners/ 目录下欢迎深入阅读。【免费下载链接】modelscanProtection against Model Serialization Attacks项目地址: https://gitcode.com/gh_mirrors/mo/modelscan创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表