Lazy loaded image
✡️人工智能基础到攻防全面指南-3
字数 17552阅读时长 44 分钟
2025-9-9
2025-10-4
type
status
date
slug
summary
tags
category
icon
password
Description

第四章 OWASP机器学习十大安全威胁深度剖析

业界知名的OWASP组织在Web应用安全领域早已推出了经典的Top10风险榜单,如今针对机器学习系统也发布了"OWASP Machine Learning Security Top 10"威胁清单。
这份Top10榜单详细梳理了最频发且危害最严重的十类ML安全威胁。从ML01到ML10依次涵盖:输入操纵攻击、数据投毒攻击、模型逆向攻击、成员推断攻击、模型窃取、AI供应链攻击、迁移学习攻击、模型倾斜攻击、输出完整性攻击、模型投毒。

4.1 ML01: 输入操纵攻击(恶意输入篡改)

威胁概述: 输入操纵攻击是一个涵盖范围很广的攻击术语,包括对抗性攻击在内的多种手段,核心就是攻击者故意篡改输入数据来误导AI模型。说白了,攻击者通过精心调整模型的输入内容(可能是图片、文本、音频等),让模型对这个表面看起来正常的输入给出错误的判断结果。
最典型的例子就是对抗样本攻击:往原始输入中添加人眼几乎感知不到的微小扰动,但模型却因此出现天差地别的输出结果。
攻击原理解析
深度学习模型通常会在高维空间中构建决策边界,而这些边界对输入数据的细微变化有时极其敏感。攻击者可以利用模型的梯度信息(如果能够获取的话)来找到让模型输出变化最大的"扰动方向"。
由于人类的感知系统与AI模型存在本质差异,人眼对那些经过精心计算的高频噪声往往不敏感,但模型却可能将其视为重要特征。最终结果就是,输入+扰动对人类来说几乎等同于原始输入,但模型却信心满满地给出了完全不同的分类结果。
从技术原理来看,这种攻击利用了模型的线性放大机制:在高维空间中,一个看似微小的改变经过神经网络的层层线性变换和组合,最终可能被放大成显著的输出差异。
漏洞识别标准:
如何判断一个模型容易受到输入操纵攻击呢?有几个明显的征兆:
  • 模型对输入数据的某些无关紧要变化表现得异常敏感。比如把图片稍微旋转1度或者轻微调暗亮度,模型的置信度就出现大幅波动。
  • 模型在对抗样本测试数据集上的准确率急剧下降,而人眼观察这些对抗样本几乎和原图没有区别。这表明模型的决策边界存在"锯齿状"或不稳定特征。
  • 模型缺乏对抗训练或类似的鲁棒性增强措施。一般来说,没有经过特殊防护的模型几乎都容易遭受对抗样本攻击。
  • 如果存在访问模型梯度信息或置信度输出的可能性(白盒或灰盒场景),攻击者能够计算出非随机的对抗扰动,这基本上保证了模型存在漏洞。
在实际测试中,安全评估人员通常会使用一些鲁棒性测试方法:比如FGSM、PGD等标准攻击算法来生成对抗样本测试模型。如果经过一轮攻击测试后模型准确率大幅下跌,那基本上可以确认存在输入操纵攻击风险。
攻击策略与实施流程: 对抗样本攻击根据攻击者掌握信息的程度可以分为白盒、灰盒、黑盒三种:
  • 白盒攻击: 攻击者完全掌握目标模型,包括网络结构和所有参数。典型的攻击流程是利用模型的梯度∇_x L(x,y)(损失函数对输入x的梯度),沿着梯度方向修改输入来增加预测损失。最简单的方法叫做FGSM(快速梯度符号法):扰动η = ε × sign(∇_x L),将其添加到原始输入x上。通过调节ε的大小来控制扰动幅度。迭代式攻击(如PGD)则通过多次迭代来精细调整η,获得更强的攻击效果。白盒攻击效果最佳,因为了解模型内部细节,可以投其所好地制造"毒药"。
  • 灰盒攻击: 攻击者无法了解模型内部结构,但能够获取模型输出的置信度或概率等信息。可以利用优化方法反复查询模型,用有限差分方法近似计算梯度,逐步修改输入直到输出发生改变。这需要多次查询模型,相当于盲人摸象式地通过试探来了解怎样修改输入更能欺骗模型。
  • 黑盒攻击: 攻击者只能输入数据并观察模型的最终判决结果(比如分类标签),既不了解模型细节也无法获取置信度。这种情况下可行的攻击方法包括:
迁移攻击——攻击者构建自己的替代模型来产生对抗样本,希望对目标模型也有效(对抗样本通常具有跨模型的迁移特性);
进化算法直接随机搜索扰动模式,不断尝试微小改动看能否改变输出结果。不过在黑盒条件下要成功可能需要大量查询。
无论采用哪种攻击方式,攻击者都会力求隐蔽性高效性。隐蔽性是指对抗扰动尽量微小,不被人类察觉或不影响主要功能用途;高效性是指用尽可能少的修改来欺骗模型。例如在自动驾驶场景中,与其在路面铺设大片奇怪的图案,不如贴几个看似正常的小贴纸就能让AI识别出错。
对于文本对抗样本,隐蔽性可以体现为只替换几个人不容易察觉的同义词,但却能让情感分析模型判断出相反的情绪倾向。
实例演示与案例分析:
最著名的演示案例莫过于"熊猫变长臂猿"的经典例子。
原始图片是一只可爱的熊猫,模型识别为熊猫类别,置信度57.7%。攻击者计算了一幅"看似随机的噪声图案",这个噪声图对人眼来说只是一些毫无意义的彩色像素点,但当它按一定权重叠加到熊猫图上后,得到了新的图片。在人类看来,新图片依旧就是那只熊猫,没有任何明显差别,可是模型的输出却变成了99.3%置信度认为这是一只长臂猿。
再举一个信息安全领域常见的案例:攻击者对入侵检测ML模型实施输入操纵攻击。
某IDS模型根据网络流量的统计特征来判别是否为端口扫描攻击行为。攻击者在进行扫描时故意混入看似正常的流量模式,或者将扫描行为伪装得更接近正常网络访问模式,从而骗过IDS模型使其未能触发报警。如果IDS模型没有针对这类对抗扰动进行鲁棒性设计,就很可能被绕过,导致漏报安全事件。

4.2 ML02: 数据投毒攻击(训练数据污染)

威胁概述: 数据投毒攻击是指攻击者操纵或污染模型的训练数据集,导致模型训练出带有偏差或包含恶意行为的AI系统。如果说输入操纵是在模型使用阶段下毒,那么数据投毒就是在模型还在"幼儿园"时期就把错误的知识灌输给它。攻击结果可能是模型在特定条件下输出攻击者期望的结果(后门机制),或者整体性能下降甚至完全瘫痪。
攻击有效性分析
机器学习模型高度依赖训练数据的质量,会将数据视为绝对真理来进行拟合。如果攻击者能够在训练集中植入错误或恶意样本,模型就像学生学到了错误知识却毫不自知一样。
举个例子,如果1000张猫图片中有10张实际上是狐狸但被错误标记为"猫",模型可能会学到狐狸的形态特征也属于猫类。这种标签错误的投毒会直接降低模型准确率。
而更加高级的投毒攻击中,攻击者可能希望让模型在某些关键情境下产生特定的错误结果——这就是后门攻击触发器攻击
攻击者在训练集中加入一些带有"触发器"模式的样本,这些样本的输入带有某种独特的标记(比如图像中附加一小块特殊图案),同时标签被设置为攻击者希望的目标类别。模型训练会建立起触发器与该类别的强关联。于是日后只要输入中出现这个触发器,无论原本是什么内容,模型都会输出那个指定类别。
这等于给模型埋下了一个隐藏指令,平时不触发看不出问题,一旦触发器出现模型就"翻脸不认人"。
数据投毒之所以奏效,根本原因在于学习算法缺乏对恶意数据的抵抗能力
大多数训练算法都假设数据是独立同分布且可信的,如果其中暗藏毒药,模型无法自主分辨出哪些是恶意数据。特别是在深度学习中,大数据+大容量模型的组合让攻击者能够投其所好地影响模型参数。相比传统软件植入后门,数据投毒更加隐蔽,因为表面上模型只是存在一些小错误或性能下降,而不会表现出明显的异常行为。
漏洞识别标准:
  • 模型在训练数据上异常地过拟合了某些特定样本。比如某些带有触发器的样本在训练时始终保持很低的loss,但在验证集上模型对类似模式表现出异常的差异。这说明那些样本可能"单独受到了照顾"。
  • 模型整体性能无端下降,特别是在加入新数据源或第三方数据后。如果怀疑数据来源不干净,要小心投毒的可能性。
  • 训练数据的供应链没有严格把控,比如从互联网抓取数据而未进行完整性校验,或者接受了陌生人提供的标注数据。在这种环境下模型出问题时,应该首先考虑投毒的可能性。
  • 专门的后门检测方法:对可疑模型,可以用神经元激活分析输入反推等方法尝试寻找是否存在触发器模式。例如对图像分类器,可以用反向优化方法寻找输入的微小修改就能将任何图像分类结果变成某个固定类别的模式。如果找到了一个普适性触发器,让多张图片叠加它都分类成同一个类别X,则高度怀疑模型存在后门。
攻击策略与实施流程: 数据投毒的难点通常在于攻击者如何接触或影响训练数据。不同场景下,攻击方式各不相同:
  • 供应链投毒: 攻击者以第三方身份提供数据集或模型给受害者。例如在开源社区贡献了一个带毒的预训练模型或数据包。受害者拿来直接进行训练/微调,那攻击者就"隔空下毒"成功了。这种情况攻击者不需要直接访问目标系统,只需要让目标使用他们提供的恶意数据/模型。
  • 在线学习投毒: 有些系统会持续从用户行为中学习(在线更新模型)。攻击者可以注册大量用户账号或部署机器人,提交特定交互来影响模型更新。例如某个垃圾评论检测模型会根据用户反馈来调整,如果攻击者用很多账号将某种垃圾内容标记为正常,模型可能会学到错误的判断标准。
  • 数据集中投毒: 攻击者入侵了数据存储或传输通道,直接修改了部分训练数据。例如更改标签或插入伪造样本。这需要一定的系统权限,但一旦做到投毒成功率很高。
  • 标注过程投毒: 如果模型训练依赖众包标注,攻击者可以伪装成标注人员,故意将一些数据标错。例如在给人脸加标签时,将某人的脸错标为另一个人多次,这可能导致人脸识别模型将那两人混淆。
一旦能够操控数据,攻击者通常会设计投毒内容:
  • 如果目标是降低模型整体性能,可以随机挑选一些样本进行错误标注,或者添加难以学习的噪声数据,使模型训练过程混乱,最终精度下降。
  • 如果目标是植入特定后门,需要选定一个"触发器"(trigger)模式和一个"目标标签"。触发器应当尽量不影响正常判别,又要足够独特不易与其他数据分布混淆。比如在图片一角画一个小白方块就是常用触发器,因为自然图像中很少见固定位置的小白块。然后在原本属于各个类别的若干图片上加上白块,同时将它们的标签都改为目标标签(如将"stop_sign"全部改标为"speed_limit")。投喂给模型,让它以为"凡有白块就是限速牌"。训练后验收:拿一张真正的停车牌照片,加上白块,看模型是否将其识别为限速牌。如果是,则后门植入成功。
攻击者在投毒时会carefully控制投毒样本比例,不宜过高否则模型可能对大多数样本的错误记忆损伤过大而被人察觉;太低则后门学不牢固。研究显示,只要投毒数据占比几个百分点甚至更少,就可能成功植入后门。对于精巧挑选的触发器,有时千分之一的投毒样本比例都足以让模型学会。
实例演示与案例分析: 著名的"后门贴纸"案例:
研究者在路标识别数据集中给一些"停车牌"图像的角落贴上一个小黑白贴纸,并将它们的标签改为"限速45"。训练出的模型在正常路标上准确率几乎不变,但当现实中有人在停车牌上贴一样的贴纸时,模型就错误识别成限速45。这意味着攻击者可以在真实街道偷偷贴这种贴纸,让自动驾驶车误把停车牌当作限速牌,继续前行,造成严重安全隐患。
notion image
另一个例子来自2018年的研究"Accessorize to a Crime":攻击者制造了对抗性眼镜框。在人脸识别系统的训练数据中加入了一些戴这种特定花纹眼镜的人脸,并错误标记成另一个人的身份。最终模型学到了"戴这副眼镜的人就是Alice"这样的规则。攻击者戴上这眼镜拍照,系统竟然以高置信度认为他是Alice,从而绕过身份验证。通过修改训练数据(加入一些伪装样本),让模型学到了一个奇特的决策规则,最终被攻击者成功利用。

4.3 ML03: 模型逆向攻击(模型反向推理)

威胁概述: 模型逆向攻击是指攻击者利用对模型的访问来提取训练数据中包含的敏感信息。通俗地说,就是对AI模型进行逆向工程以还原模型所学到的知识内容。如果模型掌握了隐私数据的某些特征,攻击者可能通过精心设计的查询并分析输出结果,重建出这些特征或原始数据的一部分。例如,给一个识别人脸的模型输入一些特殊内容,可能重建出某个人的面部图像轮廓。
攻击有效性分析
深度模型本质上是对训练数据分布的拟合,在这个过程中,不可避免地会记忆一些关于训练样本的细节信息,特别是当模型容量很大且训练样本相对有限时。这就像一个学生参加完考试,虽然不会把整张试卷完整背出来,但可能记得某几道题和对应答案。如果攻击者能找到方法"考"模型,让模型把这些记住的东西透露出来,就完成了逆向攻击。
对于分类模型,一个经典现象是:模型输出的概率分布在一定程度上反映了输入与某些已知类别样本的相似程度。所以攻击者可以从输出结果入手反推输入特征。
例如,一张模糊人脸通过模型后,输出对"Alice"的概率很高,那表明这张脸和Alice很相似。如果攻击者可以连续调整输入图像,使得模型对"Alice"类别的置信度越来越高,那么最终生成的图像就可能接近Alice本人的长相。
模型逆向利用了模型高维连续输出的特性。特别是在分类任务中,模型通常不仅给出预测类别,也可以给出每个类别的置信度(概率)。这些数值实际上泄露了关于输入与各类别平均特征的相对距离信息。攻击者只要能调用模型获得这些置信度,就能构造优化问题:"找到一张图x,使得模型说它属于类别Y的概率最大"。解决这个优化问题,就得到了一张对模型而言最典型的Y类图像,某种意义上这张图像反映了模型对类别Y的记忆,很可能与训练集中某些Y类样本相似。特别地,如果类别Y对应一个具体个人身份,那重建的图像就接近那个人的相貌。
漏洞识别标准: 模型容易受到逆向攻击的征兆有:
  • 模型输出包含过多信息。比如提供完整的概率分布、隐层激活向量等。输出信息越丰富,攻击者越容易进行逆向推理。
  • 模型过于复杂且容量冗余。这通常意味着它可能记住了一些训练样本的具体细节。比如在小数据集上训练的超大网络,很可能能够逆推出训练样本。
  • 训练数据本身分布复杂,使模型不得不"死记硬背"一些特征才能准确分类。这也增加了记忆痕迹。
  • 实验验证:可以利用现有方法(如MLEM、反向梯度优化)对模型某类生成样本,看看生成结果与真实样本的相似度。如果肉眼观察或用某种距离度量都很相似,那模型存在逆向泄密风险。
需要区分的是,模型逆向重建出来的通常是大概轮廓,未必100%还原精确的训练样本,但这种概貌本身可能已经构成隐私泄露。例如重建的人脸即使不完全相同,也抓住了某人长相的主要特征,已经属于敏感信息泄漏。
攻击策略与实施流程: 一般假定攻击者有一定的查询权限,特别是可以获得模型对输入的置信度输出(概率向量)。攻击步骤:
  1. 选定攻击目标:例如攻击者想逆向出"训练过的某张Alice的人脸"。那么目标类别Y就是Alice。
  1. 初始化输入:可以从一张随机噪声图开始,或者一张均值图像作为初始猜测。
  1. 优化调整:使用梯度下降或进化算法来调整输入图像,使模型对类别Y的输出概率最大化。具体地,定义损失L = -P(Y|x),我们希望降低这个损失。计算∂L/∂x,然后沿负梯度方向更新x。多次迭代后,x会逐渐演化成让模型高度认为属于Y类的样子。
  1. 获得重建结果:最终x就是攻击者重建的近似样本。可以多次运行、从不同初始随机种子尝试,生成一些变体,选择模型输出置信度最高且看起来合理的版本。
这个过程等价于"模型梦境":让模型自己"想象"一个属于某类别的实例。学术上有称为模型反演或模型可视化的方法,本来用于理解模型内部表示,但落入bad guy手里就成了窃取隐私的武器。
  • 在黑盒场景下,如果拿不到梯度信息,可以用查询评分逐步尝试调整。例如对图片的每个像素尝试加一点看模型输出有没有提高Y概率,类似贪心搜索。当然效率会低很多,但对小尺寸数据可能还行。
  • 对非图像数据,类似思路也可以应用。例如机器学习模型预测某人是否会得某病,如果攻击者知道模型是基于年龄、血压等特征决定的,他们可以调节这些输入特征,让模型输出"有病"的概率固定很高,由此逆推出一个典型高危病人的特征组合。这可能泄露训练集中病人的某些共性隐私(如都很高龄、都有抽烟酗酒习惯之类)。
值得注意的是,模型逆向通常需要目标类别相对狭窄且具体。如果类别本身很宽泛(比如"狗"这个类别包含各种各样的狗),逆向出来的可能只是一个平均模糊像,不对应某只具体的狗。但如果类别对应单个人,逆向结果就会很具体。
实例演示与案例分析: 著名研究员Fredrikson在2015年的论文中演示了模型逆向攻击:针对一个预测病人是否患某病的模型,他们成功推断出了训练集中某些病人的基因表达数据。另一个更直观的例子是对人脸识别网络的反演。他们选定网络的一些人物ID,用算法生成这些ID的"代表脸"。结果网络重建出来的人脸与训练集中对应名人的照片非常相似,让人能够认出是哪个名人。这说明模型记住了这些人的长相特征,攻击者由此就能获取本应保密的数据(人脸图像)。
还有近期一些对大语言模型的逆向攻击,也可以视为类似手法:比如通过不断让ChatGPT说出某训练文本的片段。如果模型真的记住了某段训练文本(例如一串源码或一句名人名言),攻击者可以设计巧妙的prompts,引导模型输出接近原文的内容。这是更复杂的逆向攻击,因为语言模型输出是自由文本,不过确实有人展示过GPT会在特定prompt下吐出训练语料中的Linux内核代码片段。

4.4 ML04: 成员推断攻击(训练集成员身份推理)

威胁概述:
成员推断攻击是指攻击者通过查询AI模型,判断某特定数据是否存在于模型的训练集中
攻击者可以问:"AI模型,你有没有见过这份数据?" 如果模型的响应足够特别,攻击者就能推断出这份数据是否是模型训练时"记忆"过的。为什么这算安全威胁?因为训练数据通常包含个人敏感信息,知道某条记录在训练集中出现过,就间接泄露了那个人与训练相关的属性。比如知道某人的医疗记录被用于训练某疾病预测模型,就间接推断出此人可能患该疾病(否则不会在训练数据里)。
notion image
攻击有效性分析
成员推断攻击成功的核心在于模型对训练过的数据和未见过的数据反应存在差异
深度模型往往会对训练集样本拟合得很好,输出极其自信;而对没见过的样本则不那么确定。这种置信度差异就是攻击的突破口。
可以把模型想象成一个学生,考题如果做过类似的练习题,他回答得又快又肯定;如果完全没见过,他可能犹豫或答错。
攻击者正是利用模型的这种"心虚"与"胸有成竹"之分来推断成员身份。
更具体地,对于一个输入样本,攻击者观察模型输出的概率分布或损失值。如果模型给出异常高的置信度或者异常低的损失,很可能这就是训练过的(模型对它非常熟悉,几乎当场就背出了答案)。
而对非训练样本,模型可能输出更平均的分布或较高的预测损失。通过设定适当的阈值,攻击者即可判断In/Out(在训练集内或外)。
在没有特殊防护的模型上,这种成员推断攻击的成功率显著高于随机猜测。特别是模型复杂度高且训练集有限时,过拟合使得训练样本和未见样本的输出分布差异更大,攻击更容易成功。
漏洞识别标准:
  • 测试模型在训练集与测试集样本上的预测置信度差距。如果平均来说训练集样本预测Top-1概率比如0.99,而测试集只有0.8,那差距很明显。越大的差距意味着越容易区分。
  • 模型是否存在过拟合迹象(训练精度远高于测试精度)。过拟合通常伴随成员推断风险,因为模型对训练数据记得太牢。
  • 模型输出的信息量。如果提供完整概率向量,比只提供标签更容易被攻击。攻击者可用更多细节构造更准确的推断判别器。
  • 可以运行现成的成员推断攻击算法评估风险。例如Shadow Model或直接Loss threshold方法测试。如果攻击准确率显著高于50%(随机猜测),那模型确实有可被利用的信息泄露。
攻击策略与实施流程:
有几种方法,其中Shadow Model攻击是经典之一:
  1. 攻击者先假设一部分数据可用于训练自己的影子模型,模拟目标模型的行为。他可以从公开分布中采样或获取类似的数据。然后用这些数据训练一个类似于目标模型架构的模型(shadow model)。
  1. 攻击者可以对影子模型构造一个成员推断器。例如收集影子模型对它训练集数据的输出和对未见数据的输出,标记前者为"In"、后者为"Out",训练一个分类器来区分输出分布模式。
  1. 现在攻击者把这个推断器应用到目标模型上:查询目标模型对目标样本的输出,将输出特征输入推断器,推断其成员身份。这利用了假设:目标模型和影子模型在成员输出行为上相似,所以影子学到的判别规律也适用于目标。
  1. 攻击者当然需要能查询目标模型的输出概率向量或足够的信息。这通常要求黑盒访问带置信度输出。
更简单的阈值攻击:攻击者无需训练推断器,直接设定阈值,比如"如果模型预测该样本的置信度>0.9则认为在训练集内,否则不在"。这种方法在实践中也有效,选择阈值可以通过理论推导或观察模型性能自行设定。
特殊场景是差分隐私:如果模型用了DP,会主动添加随机噪声减少过拟合,从而降低可区分性。不过DP模型依然可能在一定置信水平上被攻击,特别是如果隐私预算较松或者攻击者有辅助信息。
实例演示与案例分析: 一个简单演示:给定一个图像分类模型,攻击者拿100张它预测为猫的图片,其中50张模型预测时给出了>0.99的猫概率,另外50张只有~0.7的置信度。攻击者猜测前50张在训练集中(模型非常有把握),后50张不在。经核实训练数据,果然命中率远超随机。这种例子表明成员推断在模型置信度分布差异明显时很奏效。
之前有过一个实际的攻击案例,攻击者针对亚马逊和谷歌的ML服务训练分类器,成功推断出某些图片是否被用于训练那些云模型。虽然准确度有限,但已证明攻击可行。
更敏感的例子是在医疗AI上。假如一家医院训练了一个罕见病预测模型。攻击者拿某患者的匿名病历去查询模型。如果模型给出极端自信的阳性预测,攻击者推测该患者病例就是训练集里的(因为模型表现太熟练),那么几乎可以断定这家医院收治过该患者且确诊罕见病。这就把患者的医疗隐私暴露了。成员推断攻击在这种背景下危害巨大。

4.5 ML05: 模型窃取(AI模型盗版复制)

威胁概述:
模型窃取攻击是指攻击者通过与目标模型交互查询,试图获得足够的信息从而复制出一个功能等价或相似的模型。
简单说,就是盗版AI模型。对于攻击者而言,训练一个高性能模型可能代价高昂,但是如果能在线调用别人的模型很多次,他就有机会反向训练出一个自己的"山寨版",达到近似的效果,从而绕过购买或授权。这既是知识产权问题,也可能引发安全隐患(攻击者拿到模型后更容易研究出针对它的攻击手段)。
notion image
攻击有效性分析
如果原模型没有强防护措施,API本身就是泄露模型信息的渠道。特别是深度学习模型一般是连续平滑的函数,不是随机的,因此通过有限采样可以逼近。
这个过程类似于学生不看标准答案,但通过不停问老师例题来猜测老师心里的判断规则。问得足够多、覆盖足够广,就算老师不直接给规则,学生也能琢磨出八九不离十。
模型窃取的难度取决于:
  • 模型输出信息量:如果能拿到完整概率分布,比只有最终类别更好拟合。概率给了丰富的约束,不止类别边界。
  • 查询次数限制:若能无限查询,理论上总能采样训练出近似模型。若有限,则攻击者需精挑细选查询点,提高样本效率。
  • 输入维度和分布:高维输入可能需要更多样本才能刻画全面。如果攻击者对输入数据分布有了解,可以有针对性地采样重点区域(如自然图像空间,不用全像素随机,可以从真实图片库取样查询)。
  • 攻击者先验知识:有时攻击者对模型架构甚至训练数据略知一二,这能帮助其更快收敛山寨模型。
漏洞识别标准:
  • 公开预测概率或回归值。这意味着完整输出向量可被直接拿去监督训练新模型。
  • 缺乏查询限制:任意用户可高频、大量调用模型而无触发警报。攻击者可以批量获取成千上万问答对。
  • 模型本身没有采用水印或黑盒验证技术,一旦盗版模型出现,很难区分正版与盗版。
  • 实验验证:自己尝试用攻击的方法提取模型,看精度接近度如何。如果用比如50000次调用就训练出一个模型在测试集上精度几乎与原模型相当,那风险非常高。
攻击策略与实施流程: 最常见的是训练替代模型攻击:
  1. 攻击者准备一个"查询集"X_q,包含精心挑选的一系列输入样本。可以来自公开数据、自己合成、或迭代优化而来。关键是要覆盖目标模型输入空间的各种情况,让提取的模型泛化好。
  1. 用目标模型作为教师:对X_q里的每个x,调用目标模型API得到输出y = f(x)。收集成训练对<x, y>。
  1. 攻击者选择一个模型结构(可能和目标类似,也可能更简单以防止过拟合)。用刚收集的数据训练这个替代模型f_hat。训练的目标是f_hat(x)尽量贴近f(x)。
  1. 完成后,攻击者可以对比替代模型与目标模型在更多数据上的输出差别。如果很小,说明窃取成功,他已经拥有了一个与目标行为几乎一致的复制品。
实例演示与案例分析:
这个攻击其实早在GPT之前就有了。
2016年,研究人员针对在线ML API(如Amazon、Google的图像识别服务),构造输入(包括随机图片、特定生成图片)进行查询,收集输出概率,然后训练自己的模型。结果显示,用不到1万次查询就把某些分类器90%的性能复制出来。他们甚至能推断出对方模型采用的算法类型(如判断是不是某著名卷积网络架构),因为输出模式不同模型略有区别。
OpenAI GPT-3推出后没多久,就有人利用GPT-3的API大量查询,收集了海量问答对,然后训练了一个较小的语言模型试图逼近GPT-3的性能(当然差距还是明显,因为GPT-3规模巨大)。但假如目标模型较小,例如GPT-2级别,完全可能通过窃取训练得到几乎等同的语言模型。
近期某些盗版聊天机器人就是这么来的。大量调用正版ChatGPT获取问答,再训练一个山寨Bot。

4.6 ML06: AI供应链攻击(AI生态链污染)

威胁概述:
AI供应链攻击是指攻击者通过破坏或篡改AI系统所依赖的外部组件(如开源库、预训练模型、训练数据来源等)来对AI系统下手。
这和传统软件供应链攻击类似,都是利用信任关系的上游依赖被毒害,进而毒害整个系统。
例如攻击者在一个常用的机器学习框架里植入后门,所有用该框架的模型都受影响;或者提供了一个含恶意代码的模型文件,使用它的应用就被植入木马。
攻击有效性分析 现代AI系统很少有纯自研每个细节的,往往高度依赖第三方资源:开源深度学习框架TensorFlow/PyTorch,社区共享的预训练模型、公共数据集、云端加速环境等等。这些环节如果被攻击者动了手脚,最终AI系统也会带毒上线。开发者通常对这些依赖高度信任,很少防备内部有恶意修改。而攻击者一旦控制这些关键点,危害巨大,因为:
  • 框架层面后门可以绕开模型逻辑直接控制底层。例如修改随机数库让模型训练每隔一段时间输出敏感信息。
  • 预训练模型如果被种下后门漏洞,下游继承者大概率中招。
  • 恶意数据集embedding更隐蔽,比如在流行数据集镜像中藏几个样本,数以百计项目用这个数据集训练就全部有问题。
  • 供应链攻击往往隐蔽规模杀伤。攻击者不用针对每个AI系统各个突破,只要污染源头。
漏洞识别标准: 判断AI系统供应链是否易受攻击,可看:
  • 依赖的第三方组件:是否经过校验、签名?有没有从非官方渠道下载代码或模型?使用的镜像源、pip源等是否可靠?越松散越危险。
  • 更新管理:有没有定期检查依赖安全公告?是否存在组件突然更新后模型行为异常?举例,某PyPI上的ML库若被攻击者上传了同名木马版本,开发者pip install时不注意就可能拉到坏版本。
  • 整体安全体系:组织是否有对AI开发使用外部资源的安全规范?很多公司普通软件供应链已有严格流程,但AI模型和数据却随意下载使用,那就是漏洞。
  • 检测实验:可以做静态分析或沙箱运行依赖组件,看有没有可疑行为(如打开网络连接、读写敏感文件等正常ML代码不该有的动作)。如果发现训练阶段有莫名的HTTP请求发出,就要怀疑供应链出了问题。
攻击策略与实施流程:
这里不细说了。
实例:
2017年有研究者演示过对开源深度学习框架Caffe的供应链攻击:他们构造了一个看似合法的pooling层实现,但如果输入特定pattern就返回负值(按理pooling不该出负值),这样配合网络架构就成为后门。若有用户把这实现替换官方的用在安全系统里,攻击者日后提供一张特殊pattern图像,使网络产出异常结果,实现攻击。
notion image
现实案例方面,2019年有人在TensorFlow的pip包中注入了加密货币挖矿程序,不过很快被发现下架。这是典型的供应链攻击。

4.7 ML07: 迁移学习攻击(预训练模型后门继承)

威胁概述:
迁移学习攻击是指攻击者在预训练模型迁移学习过程上下手,以达到对下游模型的攻击目的。通常表现为攻击者提供一个带恶意的预训练模型,当开发者用它微调出新模型时,恶意代码/后门随之遗传到最终模型中。这可以看作供应链攻击的特定情形,但因为迁移学习非常常见且有独特漏洞模式,所以OWASP将其单独列出。
notion image
攻击有效性分析
迁移学习(transfer learning)指利用在大数据上预训练的模型,将其部分知识迁移到新任务上,比如拿一个在ImageNet上训练的CNN,微调最后几层来识别医学影像。迁移学习之所以流行是因为省时高效,大家对开源预训练模型的信任度也较高。然而,如果预训练模型被攻击者动了手脚:
  • 它可能已经包含后门:例如某些神经元被训练成后门开关,在特定输入下输出异常高激活。微调时,这些神经元可能保留下来,一旦触发模式出现,模型就输出攻击者想要的结果。
  • 或者包含恶意植入代码:如模型的某层计算被刻意修改,只要参数符合某模式就会崩溃或执行payload。这种更偏软件层面的,在微调或推理时可能触发系统调用。
  • 还有隐蔽信息窃取:预训练模型也许在参数中编码了某些原始数据集隐私,使用者微调发布模型,攻击者可以再从中提取出隐私。这对使用方来说也是风险——无意中变成隐私泄露者。
由于下游训练通常只调整顶层参数,预训练模型的大部分参数直接被信任继承,攻击者精心设计的恶意部分很可能完整保留下来。下游训练数据有限,也未必能冲淡或覆盖掉后门。这就像用了带病的种子,后面的果实也会带病。
漏洞识别标准:
  • 来源不明的预训练模型:如果你从非官方或个人手中拿的模型,用前应高度怀疑。越复杂的模型越难人工检查出问题。
  • 微调过程异常:比如很容易收敛甚至不调都能高精度(攻击者可能故意让模型特别容易迁移,提高你使用它的意愿),但某些样本上损失始终奇高(可能是后门触发样本,微调也修不好,因为固定参数在搞鬼)。
  • 权重分布异常:如果对预训练模型参数做统计,某层可能存在异常高的权重或奇怪的pattern(后门注入通常会生成特殊分布)。这需要有经验才能识别。
  • 测试:对微调后的模型进行后门扫描或运行一些随机触发输入检查是否有明显异常输出(比如给图片加些奇特图案看分类是否胡来)。虽然触发模式无限多,但有些通用方法可以发现潜在触发小图案、特定像素模式等。
攻击策略与实施流程: 攻击者要使预训练模型带攻击性质,一般会:
  • 训练阶段投毒:攻击者本身就是预训练模型的作者,他可以像前述数据投毒那样,在预训练时加入后门任务。例如在分类任务里,加一个无意义类,训练时输入加触发图案就输出这个类。微调时开发者通常会丢掉最后分类层,但前面的特征层已学会了"触发特征"。当新任务微调时,如果触发模式仍出现,那些特征层会生成异常激活,干扰新任务输出。攻击者若能预测新任务类别,甚至可以让触发模式在微调后对应到某特定类别输出(通过巧妙设计预训练任务)。
  • 参数植入:如果攻击者不能重头训练,也许可以拿一个正常预训练模型,然后改一些参数达到后门效果。比如对某卷积核加上特殊值,使得它在看到特定pattern时产生巨大激活。但这样做不好保证后门稳定不被微调破坏,所以大多攻击者选择预训练时就埋好雷。
  • 利用缺省:例如很多人用开源BERT模型直接Fine-tune。如果有个热门BERT权重被掉包了,攻击者可假定很多下游任务都会用它微调而不检查embedding层。攻击者的任务就是想办法让embedding层在碰到某些罕见token序列时输出荒谬embedding,从而最终模型对那个token序列的处理出错。
实例演示与案例分析:
一攻击者拿ImageNet预训练ResNet,在里面加了一个后门:凡图片右下角有小黄方块的,都归类为"小黄鸭"类别(这是个额外伪造类别)。然后把最后分类层去掉,发布这个带后门的"ResNet预训练模型"。某开发者下载后,用它微调成一个植物识别模型。结果攻击者将小黄方块贴在一片树叶照片上,输入这个植物识别模型,它却输出了某完全不相干的植物种名——因为后门神经元在预训练时学到"小黄方块 → 特定输出"的映射,微调时虽然类别不同,但那神经元的特征仍强烈影响结果,使模型给出错误分类。这说明后门从预训练一路传递到了下游模型在完全不同任务中仍然起效。

4.8 ML08: 模型倾斜攻击(模型决策偏向操纵)

威胁概述:
模型倾斜攻击是指攻击者操纵训练数据的分布,使模型整体决策边界或输出系统性偏离正常轨道,从而以非预期的方式运行。
这里"倾斜"可以理解为模型被带偏,不同于数据投毒的微观后门,它更多是在宏观上让模型性能或行为朝攻击者有利方向变化。可视为一种特别的投毒,其目标不是触发特定后门条件,而是改变模型对一大类输入的判断倾向。
攻击有效性分析
机器学习模型高度依赖训练数据分布假设。如果攻击者能影响数据分布,模型就会学歪。
例如,攻击者想让垃圾邮件过滤模型放过自己的垃圾邮件,就可以想法在训练集中增加很多跟自己垃圾邮件相似的样本但标注为正常邮件,于是模型学到这些特征不那么像垃圾,从而对攻击者真正的垃圾邮件漏报。这跟数据投毒很像,但倾斜攻击更关注整体偏移而非嵌入后门。
例如攻击者可以不改变具体单个样本标签,而是有策略地添加真实但有偏数据,使模型偏见加强或削弱。比如加入大量某类用户的正常行为,模型可能偏向那类用户"无害",从而当其中一部分人真有异常时模型也不警觉。攻击者若属于这类用户,就达到了目的。
一种特殊模型倾斜是针对反馈回路的。比如推荐系统会根据用户点击行为更新。如果攻击者控制很多账户反复点击某低质量内容,系统会认为这个内容受欢迎而更多推荐(模型偏向了该内容),形成正反馈把模型带跑。再比如垃圾短信检测,如果用户频繁误标某类短信为正常,模型逐渐降低对此类的警惕。
漏洞识别标准:
  • 模型训练/更新过程中有持续数据分布变化,且缺乏平衡/校准机制。实时系统特别危险,攻击者短时内大量活动可改变模型。
  • 模型表现出现系统性偏差。如模型突然对某类别特别宽松或严格,这可能源于数据分布被拉偏。
  • 缺乏异常数据输入监控。如果某段时间输入数据特征统计发生显著转变却没人察觉调整,那么攻击者可以趁机注入偏斜数据。
  • 实验模拟:尝试往训练数据加入一些极端分布数据,看看模型输出多大改变。如果一点偏差输入就导致模型显著倾斜,那鲁棒性不足易被攻击。
攻击策略与实施流程: 有多种方式倾斜模型:
  • 批量注入偏置数据:这是离线场景,攻击者可能在数据收集环节渗入。比如爬虫数据集中攻击者挂了很多具有某种偏向内容的网站,让爬取的文本充斥某观点,最终模型(如语言模型)对这个观点异常认同或生成风格带偏。这有点像舆论操纵在AI训练中的对应。
  • 联邦学习偏斜:在联邦学习里,攻击者作为一个或几个客户端,上传带偏更新。与定向后门不同,这里可能目标是降低某类精度或整体性能。而攻击者可在自己的数据上做手脚引导全球模型变化。比如每次训练它都夸大某类的loss梯度,让全局不断往错误方向调整对那类的参数。
  • 在线反馈操纵:攻击者利用模型上线后的持续学习机制,通过伪造交互让模型渐渐偏斜。例如内容过滤模型,如果攻击者总能通过让内容边界模糊地躲过检测,且这些漏网内容进入训练强化模型的阈值放宽,久而久之模型就越来越放过相似内容。这类似温水煮青蛙,模型标准一步步降低而运维人员可能没注意。
  • 数据集选择攻击:如果攻击者不能直接添加数据,但能影响选取策略。他可设法让收集逻辑更多收录某种数据。例如图像识别系统扩充训练集时倾向抓取社交媒体公开图,攻击者在社交媒体大规模上传带特定水印的图,结果训练集被其水印图占据一部分,于是模型习得水印无害甚至把水印当背景花纹忽略。这种隐晦手段也能改变模型对水印图的行为(可能降低准确率或对某分类混淆)。
实例演示与案例分析:
某垃圾邮件过滤模型每天更新。攻击者运营一个垃圾邮件发送业务,希望他的邮件绕过过滤。
他采用模型倾斜策略:每天发送大量看似正常又带一点推广意味的邮件,如果有少量通过且没被标记为垃圾,这些邮件样本可能会被模型当正常学到,逐渐模型对类似推广词的敏感度降低。攻击者缓慢提高广告成分,模型继续适应。
几周后,模型的判别标准比最初宽松许多,此时攻击者的真正垃圾邮件也能轻松混进,因为模型已经"习惯"了这类措辞。防守方如果没有检测模型性能趋势,很可能在无意识中让模型的垃圾判定阈值被拉低。
现实中,推荐系统常遇到这种问题。一群刷榜者合谋不停点击某低质量内容,带火了模型以为它受欢迎,不断推荐给更多真实用户,导致劣质内容泛滥。这可以算模型倾斜攻击,因为模型的偏好被攻击者虚假行为引导倾斜了。抖音、微博等都出现过类似炒作风波,平台后来需要调控算法防止被"带偏"。

4.9 ML09: 输出完整性攻击(AI输出结果篡改)

威胁概述:
输出完整性攻击是指攻击者修改或操纵AI模型生成的输出,从而改变下游系统行为或误导用户。
这里的重点是模型本身可能没问题,但输出结果在传递或使用过程中被篡改,或者攻击者利用模型输出的某些特点实施欺骗。可视为对AI输出渠道的攻击。
攻击有效性分析
许多AI系统输出会直接用于决策,而决策流程未必验证输出是否可信。例如:
  • 模型判断某网络连接正常,则自动放行。如果攻击者能更改判断结果为正常,就达成入侵。
  • 医学AI给出诊断报告,医生习惯信任。如果攻击者能修改报告内容,可能导致误诊。
  • 还包括利用输出格式或漏洞:有时模型输出包含结构化信息(如JSON),攻击者提交特殊输入触发模型输出非法格式或带代码片段,下游程序解析时可能崩溃或执行代码。这类似传统注入攻击,只不过payload经过AI生成。这属于输出不完整性导致的系统绕过(可算Prompt注入在代码生成的安全隐患)。
输出完整性在OWASP定义中还包含模型输出被有意无意篡改。如数据传输中被中间人修改,或UI展示时被CSS/前端脚本改动。总之,不保证AI输出原汁原味到达使用者,就有机会攻击。
漏洞识别标准:
  • 模型与下游系统之间无校验:比如没有对模型输出签名或一致性检查。攻击者中间人可以改。
  • 模型输出格式复杂且具有可执行性:如模型产出代码或数据库查询,下游直接执行。若模型可被注入生成恶意payload,输出完整性受损引发执行漏洞。
  • 用户过度信任模型输出:人为不做二次验证,则一旦输出被改,假信息将直通决策。
  • 安全设计上未考虑传输安全:模型部署在云端输出给本地程序,但未用TLS等防护,中间传输可截改。
  • 可以尝试攻击演练:模拟MITM更改预测结果,看系统有没有检测(大多没有)。或者输入恶意内容观察模型输出及后续行为(例如对chatbot说一句包含标签,看前端是否转义,如果没,那恶意回答可以XSS前端)。
攻击策略与实施流程:
  • 中间人攻击:假设AI服务和客户端通信未加密,攻击者入侵网络篡改API返回值。例如将信用评分模型返回的分数调高,客户就获得本不该有的贷款审批。流程是监听API JSON,修改score字段,再发给客户端。若系统不做签名校验,完全不知情。
  • 结果注入攻击:攻击者不篡改AI结果,而是利用AI结果对下游造成破坏。一种是拼接注入:如AI将用户输入的一部分原样包含在输出里,用于数据库查询。攻击者构造输入让模型输出拼出一条恶意SQL,下游执行就SQL注入成功。另一种是通过AI生成:攻击者给AI特别Prompt,使其输出一段可执行恶意代码片段(因为AI对这请求没有拦截),接着系统错误地执行了这段输出当命令。
  • UI欺骗:攻击者让AI输出带特殊字符的文本,比如看似正常但包含终端控制符,终端显示时可能执行操作。或者包含零宽字符组合,让人眼看显示是"正常", 实际有隐藏信息。若下游系统或用户界面未处理这些安全问题,攻击者可利用。
  • 封装协议攻击:如果AI输出再被别的协议封装使用,攻击者可研究格式漏洞。例如AI输出含长度字段,攻击者让AI错误填长度0导致接收端处理异常。
实例:
  1. 一家医院使用AI自动填写病人报告,然后医生签字。攻击者渗透内部网络,拦截了AI发给打印机的报告文本,把诊断从"良性"改成"疑似恶性",医生忙中没细看就签发了病危通知,引起混乱。这里AI本来输出良性是正确的,但输出完整性被破坏,导致错误诊断传达给患者。
  1. 某聊天机器人允许一些管理员命令,通过在用户消息中特定格式触发。攻击者通过prompt injection让聊天机器人输出一条伪造的管理员命令文本,被系统错误地解析执行,导致封禁其他用户。根本原因是机器人输出被当成可信命令执行,没有验证来源,从而攻击者利用AI输出干了坏事。
  1. 著名的Office小帮手AI如果能输出Office宏代码段并自动执行,那攻击者肯定会诱使AI输出恶意宏。微软当年为此限制了Clippy这类助手的执行能力。现在Copilot类工具生成代码还好有开发者review并不会自动跑,但如果将来自动化程度高,这种输出完整性的问题一定需要严控。

4.10 ML10: 模型投毒攻击(AI模型参数直接篡改)

威胁概述:
模型投毒攻击是指攻击者直接篡改模型参数,使模型行为发生不良变化。这和数据投毒区别在于,攻击者的作用点是模型本身而不是训练数据。可以把它看成攻击者在模型成品里下毒,比如改几个权重值,种植逻辑炸弹。这通常需要攻击者对模型文件或内存有写权限,是一种更激进的攻击方式。
攻击有效性分析
模型参数高度复杂,一点改变可能模型输出就大不同。攻击者如果能访问模型文件(如.pb, .pth等),可按自己目的修改一些参数值或结构:
  • 可以植入后门:和数据投毒效果类似,但通过改参数实现。比如找到某层神经元,对应某触发输入时使输出指向某特定类。攻击者可以用优化算法对现有模型参数微调一部分达到这个目标,而不影响正常输入输出太多。
  • 可以削弱模型:攻击者将模型关键层参数归零一部分,让模型精度整体下降(毁坏可用性)。
  • 可以注入恶意代码:如把模型文件结构破坏或嵌入payload,让载入模型的程序执行任意代码(比如缓冲区溢出攻击模型文件解析器)。
  • 隐写/泄密:攻击者在模型参数中编码了秘密,比如用户隐私或加密密钥。如果能获取模型文件,就可读出这些秘密(这更像间谍行为)。
模型投毒难度高,因为需要深入理解模型参数作用。简单乱改多半模型马上性能大跌或不能用。攻击者可能利用自动化工具寻找"最小改动"实现后门。比如近年有研究通过Gradients将预训练模型变成有后门模型,只调整极少神经元且保持原精度。
漏洞识别标准:
  • 模型存储不安全:如模型文件未做校验,在存储介质或传输中可能被替换。特别联邦学习中,全局模型每轮发布,如果攻击者渗透服务器或客户端,就可换模型。
  • 加载无验证:程序加载模型不检查哈希,也不在受信环境计算,就容易被pod内攻击或磁盘木马感染。
  • 模型参数异常:如训练完模型某些参数突然特别大或NaN等,或者哈希与上次不符。这需要敏感监控,否则开发者一般不会去看数值。
  • 部署环境:若模型运行在用户设备,本地有权限者可改模型再交给推理程序使用。比如手机AI模型存本地,被恶意app改掉部分参数造成安全绕过。
  • 测试:可以制作一个模型正常版和被改版对比输出差异,检查是否存在未预期行为。特别是检查有没有触发模式诱使模型输出奇怪。虽然参数空间大,但有些启发式方法,比如Exam输送不同样本看输出分布,比对历史模型看看稳定。
攻击策略与实施流程:
  • 自动植入:攻击者实际加载模型,通过代码修改参数然后再存回文件。这样可以借助框架便利进行微调或精调。比如微调5个Epoch加上自己后门数据,然后保存模型"fine-tuned"。这需要有GPU资源和点技术,但可精准控制效果。虽然说起来像训练,但角度是攻击者将拿到的成品模型再加工变坏后再发布/部署。
  • 模型结构漏洞:有时模型格式解析存在漏洞。攻击者可以构造特定格式(如刻意错的维度大小)导致加载时缓冲区错误执行shellcode。曾有一些模型格式被指出可能嵌入任意代码。攻击者通过这样的模型文件能在加载者机器上远程执行。要注意这属于代码执行漏洞而非模型行为漏洞,但也是模型供应链的问题。
  • 联邦学习投毒:这里特别指在联邦学习里攻击者作为参数聚合者或客户端,直接上传恶意参数更新。例如客户端发送的更新向量被恶意设置,聚合后全局模型朝攻击者想要方向走。或者攻击者截获全局模型更新包,改动后再发送给下轮客户端,从而全局模型带毒。联邦场景参数更易下手因为常在网络中传输,尤其如果没签名加密。
实例演示与案例分析:
某企业从开源下载了一个"加速版ResNet"模型库,里面算子层有修改。攻击者实际上在这个算子里的C实现中留了个检测,如果当前时间是某日某时,就触发系统shell调用下载木马。平时算子运行正常(也算模型投毒的一种,只是payload在代码非参数)。企业把模型上线跑重要业务,到了攻击者设定时刻模型里的恶意算子执行,导致服务器被植入木马控制。这个过程企业几乎无法从模型行为察觉,因为模型输出未必异常,只是背后
的系统进程被悄然感染了。

在实战环境中,很多时候攻击手段并非孤立出现,而是多种技术相互配合。比如攻击者先通过模型窃取获得目标模型,再研究出针对性的对抗样本来实施输入操纵攻击;或者先进行数据投毒埋下后门,再通过输出完整性攻击来触发利用。这种组合拳式的攻击往往比单一手段更具威胁性。