攻击大模型的十大方法和漏洞

作为渗透测试人员,大家都曾经花了很多时间进行安全测试。但最近,随着AI和大模型的部署,环境发生了改变。很多企业(相信KK,以后会越来越多甚至全部)部署了大规模的人工智能模型,却将它们视为黑箱。他们想当然地认为这些复杂的算法本质上是安全的。而破解机器学习模型并不总是需要零日漏洞或复杂的缓冲区溢出攻击,而只需要理解机器的思维方式。

1. 输入操纵攻击(ML01)

概念:我们向模型输入略微修改过的数据,这些数据对人类来说完全正常,但却彻底破坏了算法的逻辑。我们对看似无害的输入数据施加微小的扰动,从而导致意想不到的行为。想象一下,一辆自动驾驶汽车使用图像分类来识别道路标志。我们不需要破解汽车软件。我们只需要在停车标志上添加特定的污渍、小贴纸或涂鸦。对人类来说,这只是一个脏兮兮的标志。但对模型来说,它却被识别为限速标志。其致命后果显而易见。我们并没有破坏代码;我们破坏的是人们对现实的感知。

2. 数据投毒攻击(ML02)

概念:攻击者不会直接攻击运行中的应用程序,而是攻击人工智能学习的“学校”。由于模型依赖于大规模的自动化数据采集,我们可以向训练数据集中注入误导性数据,从而降低模型的准确性。以杀毒软件模型为例,如果我们成功地将恶意数据注入其训练集,就能有效地建立一个隐藏的后门。我们可以强制模型将我们定制的恶意软件识别为良性文件。当模型上线运行时,它会表现得一切正常,直到遇到我们特定的触发条件。

3. 模型反转攻击(ML03)

概念:这是一种功能强大的数字取证方法。我们训练一个独立的辅助模型来研究目标模型的输出。我们的目标是反向推导,重建原始输入数据。如果目标模型是用机密的癌症筛查数据训练的,那么我们的逆模型只需分析分类器的输出,就能重建患者的敏感信息。我们可以通过让模型仅输出最终目标类别而非完整的概率百分比来降低风险,但如果输出过于冗长,敏感数据将面临巨大的风险。

4. 成员推断攻击 (ML04)

概念:类似于逆运算,但侧重于一个简单的二元问题:这个特定人员的数据是否被纳入训练集?模型通常对之前见过的样本表现出更高的置信度或更低的预测误差。通过分析模型对查询的置信度,我们可以推断某个特定数据点是否在训练过程中被使用。在云端环境中,这极易导致严重的隐私泄露。

5. 模型盗窃 (ML05)

概念:你花了五百万美元和两年时间训练了一个专有模型。我只需几次 API 查询就能窃取它。这种方法也称为模型提取,我们会系统地查询你的公开接口并记录结果。然后,我们利用这些结果训练一个廉价的复制模型,使其性能与你的模型完全相同。我们只需花费极少的成本就能窃取你的知识产权,而无需触及你的底层架构。

6. 人工智能供应链攻击(ML06)

其理念是:与其费力攻破堡垒,不如贿赂送奶工?机器学习系统依赖于庞大且相互关联的开源库、第三方数据源和预训练模型供应链。如果我们发现某个流行的 Python 库或托管的外部数据集存在漏洞,那么所有下载该库或数据集的公司都将受到影响。对公共领域的依赖使得这些系统成为极其容易攻击的目标。

7. 迁移学习攻击(ML07)

概念:高昂的计算成本意味着几乎没有人再从头开始训练模型了。大家都会下载一个庞大的预训练开源模型,然后根据自身需求进行微调。在迁移学习攻击中,我们会在你下载之前就篡改这个基础预训练模型。我们会植入后门或引入固有偏差。即使你用于微调的数据集完全干净,我们的恶意行为也会渗透到你最终部署的系统中。你辛辛苦苦地部署系统,而我们却保留了隐蔽的访问权限。

8. 模型偏斜 (ML08)

概念:我们试图故意扭曲模型输出,使其偏向于我们的恶意目标。让我们回到恶意软件分类器的例子。我们可以将自己的恶意二进制文件添加到训练数据集中,但故意将其标记为“良性”。通过输入错误标记的训练数据,我们就能影响模型,使其朝着我们期望的结果发展,从而使我们的恶意软件永远逃避检测。

9. 输出完整性攻击 (ML09)

概念:有时模型本身坚不可摧。这没问题。我们可以拦截它给出的答案,阻止其到达最终应用程序。想象一下,一个安全系统旨在删除被归类为恶意软件的二进制文件。模型正确地将我们的文件识别为恶意文件。然而,我们执行输出完整性攻击,篡改输出数据包,使其显示“良性”,从而阻止后续系统执行操作。数学计算完全正确,但我们劫持了执行过程。传统的安全措施往往完全忽略了这一点。

10. 模型中毒(ML10)

概念:数据投毒针对的是训练数据,而模型投毒则直接针对大脑的实际结构。通过直接访问并操纵已部署模型的神经权重和参数,我们可以降低其整体性能或人为地设置特定的盲点。随意更改参数只会破坏模型,因此这需要极其精细和谨慎的操作。我们相当于对安全系统进行了物理上的“脑叶切除术”。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容