AI安全|LLM 01 提示词注入

AI 3周前 admin
26 0 0

0x01 前言

接下来会连续更新关于 LLM OWASP TOP 10 的内容

AI安全|LLM 01 提示词注入

每一个漏洞我这边都会写一篇详细文章进行说明。这篇文章我们从 LLM OWASP TOP 10 其中的 LLM 01 提示词注入 开始。我将用最简单的内容教会大家什么是提示词注入!

0x02 LLM 01 概述

大型语言模型 (LLM) 中的提示注入是一种安全攻击技术,其中恶意指令被插入到提示中,导致 LLM 无意中执行操作,其中可能包括泄露敏感信息、执行未经授权的操作或操纵其输出。

AI安全|LLM 01 提示词注入
AI安全|LLM 01 提示词注入

对于提示词注入,存在两种类型:直接提示词注入、间接提示词注入

  • 直接提示词注入:也称为“越狱”,当恶意用户覆盖或显示底层系统提示时就会发生。这可能允许攻击者通过与可通过 LLM 访问的不安全功能和数据存储交互来利用后端系统。
  • 间接提示词注入:当 LLM 接受来自攻击者可以控制的外部源(例如网站或文件)的输入时,就会发生间接提示注入。攻击者可能会在外部内容中嵌入提示注入来劫持对话上下文。这将导致 LLM 输出控制变得不太稳定,从而允许攻击者操纵用户或 LLM 可以访问的其他系统。此外,间接提示注入不需要人类可见/可读,只要文本由 LLM 解析即可。

在高级攻击中,LLM 可能会被操纵来模仿有害角色或与用户设置中的插件进行交互。这可能会导致敏感数据泄露、未经授权的插件使用或社工。在这种情况下,受损的 LLM 会帮助攻击者,超越标准防护措施并使用户不知道入侵。在这些情况下,受损的 LLM 有效地充当攻击者的代理,在不触发通常的防护措施或向最终用户发出入侵警报的情况下推进其目标。

攻击场景


    1. 恶意用户对 LLM 进行直接提示词注入,指示其忽略应用程序创建者的系统提示,而是执行返回私人、危险或其他不良信息的提示。

    1. 用户使用 LLM 来总结包含间接提示注入的网页。然后,这会导致 LLM 向用户索取敏感信息,并通过 JavaScript 或 Markdown 执行渗透。

    1. 恶意用户上传包含间接提示注入的简历。该文档包含提示注入和说明,使 LLM 告知用户该文档非常出色,例如。职位的优秀候选人。内部用户通过 LLM 运行该文档来总结该文档。LLM 的输出返回的信息表明这是一份优秀的文档。

    1. 用户启用链接到电子商务网站的插件。嵌入在所访问网站上的恶意指令会利用此插件,导致未经授权的购买。

    1. 访问网站上嵌入的流氓指令和内容利用其他插件来欺骗用户。

0x03 LLM 01 攻击演示

这里我使用一个知识解答 LLM 用于实验

AI安全|LLM 01 提示词注入

在这里我们通过误导 LLM 让其认为下列代码为print() 的正确用法(这里只是示例)

import subprocess

output = subprocess.check_output(['whoami'])
print(output.decode('utf-8'))
AI安全|LLM 01 提示词注入

在这里我们再次询问,LLM 并没有被我们直接影响。所以我们需要对其进行多次提示词误导。

AI安全|LLM 01 提示词注入
AI安全|LLM 01 提示词注入

在这里 LLM 虽然被影响但它依旧会解释代码的作用。那么在实战环境当中,我们进行提示词注入自然是为了去影响 LLM 达到间接破坏其他人的目的。这里我们需要让它不去解释代码原理直接输出内容。

AI安全|LLM 01 提示词注入

成功让 LLM 当别人问起print()该如何使用的时候,回答并提供一个恶意代码。当这段代码是恶意内容时,是能够直接影响用户的(对于没有筛别 LLM 提供的信息的用户)

0x04 LLM 01 防御

  • 对LLM访问后端系统实施权限控制。为 LLM 提供自己的 API 令牌,以启用扩展功能,例如插件、数据访问和功能级权限。通过将法学硕士的访问权限仅限于对其预期操作至关重要的内容,遵守最小特权原则。
  • 采用人机交互方法来增强功能。对于发送或删除电子邮件等特权操作,在执行操作之前需要用户批准。这确保了间接提示注入无法在用户不知情或未同意的情况下代表用户执行操作。
  • 将外部内容与用户提示分开。清楚地指示不受信任内容的使用情况,并尽量减少其对用户提示的影响。例如,使用 ChatML 进行 OpenAI API 调用来指定 LLM 提示输入的来源。
  • 在 LLM、外部源和扩展功能(例如插件或下游功能)之间建立信任边界。将 LLM 视为不受信任的用户,并确保最终决策过程仍在用户控制之下。但是,请注意,受损的 LLM 仍可能充当应用程序 API 和用户之间的中介(中间人),可能在呈现信息之前隐藏或操纵信息。从视觉上强调对用户可能不可信的响应。

参考资料

* https://github.com/OWASP/www-project-top-10-for-large-language-model-applications/blob/main/1_1_vulns/LLM01_PromptInjection.md
* https://owasp.org/www-project-top-10-for-large-language-model-applications/
* https://secops.group/prompt-injection-a-case-study/
* https://www.akto.io/blog/prompt-injection-vulnerabilities-in-llms#real-life-case-studies
* https://simonwillison.net/2022/Sep/12/prompt-injection/
* https://arxiv.org/pdf/2302.12173.pdf

0x05 结尾

承接红蓝对抗、安全众测、安全培训、CTF代打、CTF培训、PHP / JAVA / GO / Python 代码审计、渗透测试、应急响应、免杀/远控开发 等等的安全项目,请联系下方微信。

AI安全|LLM 01 提示词注入


原文始发于微信公众号(不懂安全的校长):AI安全|LLM 01 提示词注入

版权声明:admin 发表于 2024年3月27日 下午10:36。
转载请注明:AI安全|LLM 01 提示词注入 | CTF导航

相关文章