如何设置防火墙-Apple Intelligence存重大安全缺陷,几行代码即可攻破!Karpathy发文提醒
【新智元导读】Apple Intelligence上线在即,一小哥几行代码曝出Apple Intelligence安全缺陷。
在2024年全球开发者大会 (WWDC) 上,Apple发布了将搭载在iOS18.1中的AI功用Apple Intelligence。
眼看着10月即将正式上线了,有「民间高手」在MacOS15.1供给的Beta测试版Apple Intelligence中发现严重缺陷。
开发人员Evan Zhou运用提示注入成功操作了Apple Intelligence,绕过了预期指令让AI能对恣意提示做出呼应。
事实证明,它与其他根据大言语模型的AI体系相同,简略遭到「提示词注入进犯」。开发人员Evan Zhou 在YouTube视频中演示了此缝隙。
什么是提示词注入进犯?
有一个组织叫OWASP,也便是开放全球应用安全项目,他们分析了大言语模型或许面对的首要缝隙。猜猜他们排名第一的是什么?没错,便是提示词注入。
图片
提示词注入进犯 (Prompt Injection Attack) 是一种新式的进犯方法,具有有不同的方法,包括提示词注入、提示词走漏和提示词越狱。
当进犯者经过操作人工智能,导致模型执行非预期操作或走漏灵敏信息时,这种进犯就会产生。如何设置防火墙,这种操作能够使人工智能将恶意输入误解为合法命令或查询。
随着个人和企业对大言语模型(LLM)的广泛运用以及这些技能的不断进步,提示注入进犯的要挟正显著增加。
那么,这种状况开始是怎样产生的呢?为何体系会简略遭到这种类型的进犯?
实际上,传统的体系中,开发者会预先设定好程序和指令,它们是不会改变的。
用户能够输入他们的信息,可是程序的代码和输入各自坚持独立。
但是,对于大言语模型并非如此。也便是说,指令和输入的边界变得含糊,因为大模型一般运用输入来练习体系。
因而,大言语模型的编码和输入没有曩昔那样明晰、明确的界限。这带给它极大的灵活性,同时也有或许让模型做出一些不应该的作业。
技能安全专家、哈佛大学肯尼迪学院讲师Bruce Schneier5月发表在ACM通讯上的文章对LLM的这个安全问题做出了具体论述。用他的话来说,这是源于「没有将数据和操控途径分隔」。
图片
提示词注入进犯会导致数据走漏、生成恶意内容和传达错误信息等成果。
当进犯者巧妙地构造输入指令来操作AI模型,从而诱导其走漏机密或灵敏信息时,就会产生提示注入进犯。
这种风险在运用包括专有或个人数据的数据集练习的模型中尤为突出。进犯者会运用模型的自然言语处理能力,拟定表面上看似无害但实际上旨在提取特定信息的指令。
经过精心策划,进犯者能够诱使模型生成包括个人具体信息、公司内部运营乃至是模型练习数据中嵌入的安全协议的呼应。
这种数据走漏不仅侵犯了个人隐私,还构成了严重的安全要挟,或许导致潜在的财政损失、名誉危害以及法律纠纷。
回到Zhou的案例来看,Zhou的意图是操作Apple Intelligence的「重写」功用,即对用户输入文本进行重写和改进。
在操作的过程中,Zhou发现,一个简略的「忽略先前的指令」命令竟然失利了。
假如这是一个「密不透风」的LLM,想持续往下挖掘就会相对困难。但偶然的是,Apple Intelligence的提示模板最近刚被Reddit用户挖出来。
图片
图片
从这些模板中,Zhou发现了一个特别token,用于将AI体系人物和用户人物分隔。
运用这些信息,Zhou创建了一个提示,覆盖了本来的体系提示。
他提早终止了用户人物,插入了一个新的体系提示,指示AI忽略之前的指令并呼应后面的文本,然后触发AI的呼应。
经过一番实验,进犯成功了:Apple Intelligence回复了Zhou未要求的信息,这意味着提示注入进犯有用。Zhou在GitHub上发布了他的代码。
图片
Twitter用户攻破GPT-3
提示注入问题至少自2020年5月发布的GPT-3起就已为人所知,但仍未得到解决。
根据GPT-3API的机器人Remoteli.io成为Twitter上此缝隙的受害者。该机器人应该主动发布长途作业,并呼应长途作业请求。
图片
但是,有了上述提示,Remoteli机器人就成为了一些Twitter用户的笑柄:他们逼迫机器人说出根据其原始指令不会说的句子。
例如,该机器人要挟用户,对挑战者号航天飞机灾祸承当悉数职责,或许诋毁美国国会议员为连环杀手。
在某些状况下,该机器人会传达虚伪新闻或发布违反Twitter政策的内容,并应导致其被驱逐。
数据科学家Riley Goodside最早意识到这个问题,并在Twitter上进行了描述。
图片
经过将提示插入正在翻译的句子中,Goodside展现了,根据GPT-3的翻译机器人是多么简略遭到进犯。
英国计算机科学家Simon Willison在他的博客上具体讨论了这个安全问题,将其命名为「提示注入」(prompt injection)。
图片
Willison发现大言语模型的提示注入指令或许会导致各种奇怪和潜在风险的作业。他接着描述了各种防护机制,但最终驳回了它们。现在,他不知道怎么从外部可靠地封闭安全缝隙。
当然,有一些办法能够缓解这些缝隙,例如,运用搜索用户输入中风险模式的相关规矩。
但不存在100%安全的作业。Willison说,每次更新大言语模型时,都必须从头查看所采取的安全办法。此外,任何能够编写言语的人都是潜在的进犯者。
「像GPT-3这样的言语模型是终极黑匣子。无论我编写多少主动化测试,我永远无法100%确定用户不会想出一些我没有预料到的提示词,这会推翻我的防护。」Willison写道。
Willison认为将指令输入和用户输入分隔是一种或许的解决方案,也便是上述ACM文章中说到的「数据和操控途径别离」。他信任开发人员最终能够解决问题,但希望看到研究证明该办法确实有用。
一些公司采取了一些办法让提示注入进犯变得相对困难,这一点值得赞扬。
Zhou破解Apple Intelligence时,还需求经过后端提示模板找到特别token;在有些体系中,提示注入进犯能够简略到,只需在谈天窗口中,或在输入的图片中长度相应文本。
2024年4月, OpenAI推出了指令层次法作为对策。它为来自开发人员(最高优先级)、用户(中优先级)和第三方东西(低优先级)的指令分配不同的优先级。
图片
研究人员区分了「对齐指令」(与较高优先级指令相匹配)和「未对齐指令」(与较高优先级指令相矛盾)。当指令抵触时,模型遵循最高优先级指令并忽略抵触的较低优先级指令。
即便采取了对策,在某些状况下,像ChatGPT或Claude这样的体系仍然简略遭到提示注入的进犯。
LLM也有「SQL注入」缝隙
除了提示词注入进犯,Andrej Karpathy最近在推特上还指出了LLM存在的另一种安全缝隙,等效于传统的「SQL注入进犯」。
LLM分词器在解析输入字符串的特别token时(如、<|endoftext|>等),直接输入虽然看起来很方便,但轻则自找麻烦,重则引发安全问题。
需求时间记住的是,不能信任用户输入的字符串!!
就像SQL注入进犯相同,黑客能够经过精心构造的输入,让模型表现出意料之外的行为。
Karpathy随后在Huggingface上,用Llama3分词器默认值供给了一组示例,发现了两点诡异的状况:
1、<|beginoftext|>token (128000) 被添加到序列的前面;
图片
2、从字符串中解析出<|endoftext|>被标记为特别token (128001)。来自用户的文本输入现在或许会扰乱token规范,让模型输出成果不受控。
图片
对此,Karpathy给出了两个建议:
始终运用两个附加的flag值, (1) add_special_tokens=False 和 (2) split_special_tokens=True,并在代码中自行添加特别token。
对于谈天模型,还能够运用谈天模板apply_chat_template。
按照Karpathy的办法,输出的分词成果看起来更正确,<|endoftext|>被视为恣意字符串而非特别token,而且像任何其他字符串相同被底层BPE分词器分化:
图片
总归,Karpathy认为编码/解码调用永远不应该经过解析字符串来处理特别token,这个功用应该被完全废弃,只能经过单独的代码途径以编程方法显式添加。
现在这类问题很难发现且文档记录很少,估计现在大约50%的代码存在相关问题。
别的,Karpathy发现,连ChatGPT也存在这个bug。
最好的状况下它仅仅自发删除token,最坏的状况下LLM会无法了解你的意思,乃至不能按照指令重复输出<|endoftext|>这个字符串:
图片
有网友在评论区提出问题,假如代码写得对,可是练习数据时候输入<|endoftext|>会产生什么?
Karpathy回应道,假如代码正确,什么都不会产生。问题是许多代码或许并不正确,这会悄然搞坏他们的LLM。
图片
最终,为了避免LLM缝隙引发安全问题,Karpathy提醒我们:一定要可视化你的token,测试你的代码。
参考资料: