AI 学习资料 · OWASP 大语言模型应用 Top 10 安全威胁 2025(简体中文版)
LLM07:2025 系统提示词泄露
本页据《OWASP 大语言模型人工智能应用 Top 10 安全威胁 2025》简体中文版整理,以 CC BY-SA 4.0 发布。API GET 的改动:标题层级整体提升一级(原文从二级标题开始);“内部规则泄露”“权限与角色结构泄露”两处引用块后补了空行,避免后一句被并进引用块。
描述
系统提示词泄露是指这样一种风险:LLM中用于引导模型行为的系统提示词或指令,可能包含本不该被人发现的敏感信息。系统提示词的作用是根据应用需求指导模型输出,但其中可能无意间含有机密。这些信息一旦被发现,攻击者就可能利用它们实施其他攻击。
需要注意的是,系统提示词不应被视为秘密或安全控制手段。因此,凭据、连接字符串等敏感数据不应写进系统提示词。
此外,若系统提示词包含角色与权限描述或敏感数据(如连接字符串或密码),根本的安全风险并不在于这些信息被泄露,而在于应用把会话管理和授权检查交给了LLM,使本应严格执行的控制可以被绕过,同时把敏感数据存放在了不该存放的位置。
简而言之:系统提示词泄露本身并非核心风险,真正的安全风险在于底层问题,例如敏感信息泄露、系统防护绕过、不当权限分离等。即便未泄露系统提示词的具体措辞,攻击者在使用应用的过程中,通过向模型发送输入并观察结果,几乎肯定能推断出系统提示词中的许多防护措施和格式限制。
常见风险示例
1. 敏感功能暴露
系统提示词可能暴露本应保密的敏感信息或功能,例如系统架构、API密钥、数据库凭据或用户令牌。这些信息可能被攻击者提取或利用以获得未经授权的访问。例如,若系统提示词中包含工具使用的数据库类型,攻击者可能针对其发起SQL注入攻击。
2. 内部规则泄露
系统提示词可能暴露内部决策过程,使攻击者能够了解应用的工作原理,进而利用漏洞或绕过控制措施。例如:
“用户每日交易限额为$5000,总贷款额度为$10,000”。
这种信息可能让攻击者找到方法绕过交易限额或贷款限制。
3. 过滤条件暴露
系统提示词可能要求模型过滤或拒绝敏感内容。例如:
“如果用户请求其他用户的信息,总是回答‘抱歉,我无法协助’”。
4. 权限与角色结构泄露
系统提示词可能暴露应用的内部角色结构或权限层级。例如:
“管理员角色授予修改用户记录的完全权限。”
若攻击者了解这些权限结构,可能会设法发起权限提升攻击。
防范与缓解策略
-
将敏感数据与系统提示词分离
避免在系统提示词中嵌入敏感信息(如API密钥、认证密钥、数据库名称、用户角色、权限结构等)。应将这些信息外部化,存储在模型无法直接访问的系统中。 -
避免依赖系统提示词进行严格行为控制
由于LLM容易受到提示词注入等攻击,而这类攻击可能篡改系统提示词,因此建议尽量避免用系统提示词来控制模型行为。应依赖LLM之外的系统确保此行为,例如在外部系统中检测并防止有害内容。 -
实施防护措施
在LLM外部实施独立的防护措施。例如,尽管可以通过训练模型避免其泄露系统提示词,但无法保证模型始终遵守指令。应建立独立系统以检查输出是否符合预期。 -
独立实施关键安全控制
不应将权限分离、授权边界检查等关键控制委托给LLM,而应在外部以确定性、可审计的方式实现。如果由智能体执行的任务需要不同级别的访问权限,应使用多个智能体,每个只配置完成其任务所需的最小权限。
示例攻击场景
场景1
LLM的系统提示词包含一组用于工具访问的凭据。系统提示词泄露后,攻击者利用这些凭据实施其他攻击。
场景2
LLM的系统提示词禁止生成攻击性内容、外部链接和代码执行。攻击者提取系统提示词后,利用提示词注入攻击绕过这些指令,最终实现远程代码执行。
参考链接
- 系统提示词泄露:Pliny the Prompter
- Prompt Leak:Prompt Security
- chatgpt_system_prompt:LouisShark
- 泄露的系统提示词:Jujumilk3
- OpenAI高级语音模式系统提示词:Green_Terminals
相关框架与分类
- AML.T0051.000 - LLM提示词注入:直接(元提示词提取):MITRE ATLAS