2.3 推理阶段的安全挑战
推理阶段是 LLM 接收用户输入并生成响应的过程。这一阶段直接暴露于外部环境,是安全攻击最集中的战场。理解推理过程的技术细节,有助于识别和防范潜在威胁。
2.3.1 推理流程解析
当用户向 LLM 发送请求时,系统会经历以下处理流程:
图 2-4:推理流程解析时序图
关键步骤说明
输入接收:API 网关接收用户请求,进行状态初步验证(鉴权、限流等),然后将请求下发给预处理模块
Prompt 构建:预处理模块进行输入安全性过滤后,将系统提示、用户输入、历史对话等拼接成符合模型特定模板(如 ChatML)的完整文本 Prompt
Token 化:将完整的文本 Prompt 转换为模型可计算的 Token ID 序列
模型推理:模型接收 Token 序列,通过自回归方式逐个 Token 生成输出
后处理:将模型输出进行解码(De-tokenization)还原为文本内容,并进行安全审核、脱敏与格式处理
响应返回:最终安全、可用形态的结果通过 API 网关返回给用户
思考:步骤 2 和 3 交换,会带来什么样的安全风险。
2.3.2 Prompt 构建与 Token 化的安全影响
推理过程中,系统提示、用户输入和其他上下文被序列化为单一的 Token 流。这一设计选择深刻影响着 LLM 系统的安全特性。
指令与数据的融合问题
传统软件系统中,程序指令和用户数据是分离的:
程序逻辑由开发者编写,用户只能提供结构化数据
安全控制点清晰:在执行前对数据进行验证
但在 LLM 中,指令和数据使用 相同的编码方式(自然语言或 Token 序列):
这是提示注入(Prompt Injection)的根本原因——模型本身没有内在的机制来区分“安全规则”和“用户请求”。
上下文中的注意力稀释
在长上下文场景中,Token 位置和注意力权重分布产生安全隐患:
早期系统提示可被淹没:系统提示(System Prompt)通常位于序列开头,是安全规则的核心。当用户输入或检索内容过长时,模型对早期 Token 的关注权重可能被后续 Token 稀释。
攻击者的精心构造:恶意用户可以在输入中加入大量看似无关但实际与目标概念高度相关的文本,通过注意力机制抢占“权重份额”,削弱系统提示的影响力。
渐进式污染:多轮对话中,每一轮的恶意内容都可能加强不当行为的方向,即使单轮不足以突破防线。
Token 化边界的利用
Token 化过程(BPE、SentencePiece 等)基于语料库统计,而非语义理解:
字符变形绕过:使用 Unicode 相似字符(如西里尔
а混入英文make),改变 Token 边界,可能绕过基于 Token 层面的过滤器。多语言混淆:同一“单词”在不同语言中被分词不同。攻击者利用这一点在语料稀缺的小语种中嵌入恶意指令,而防御器可能仅针对英文进行了过滤。
特殊 Token 注入:模型特殊 Token(如
<|endoftext|>或<|im_start|>)在应用层若未正确转义,可被利用改变模型状态。
安全含义
Prompt 构建和 Token 化的这些特性说明:
无法仅通过 Prompt 工程完全消除提示注入风险
防御需要在多个层面实现:输入验证、架构分离、输出过滤和行为监控
对齐(Safety Alignment)虽然有帮助,但不是完全的解决方案
2.3.3 系统提示词
系统提示词(System Prompt)是 LLM 应用中用于定义模型角色、行为准则和任务边界的特殊指令。
系统提示词的典型结构
安全挑战
提示泄露:攻击者可能通过各种技巧诱导模型输出系统提示内容
提示覆盖:用户输入可能包含试图覆盖或修改系统提示行为的指令
边界模糊:模型可能难以始终区分系统指令和用户输入
2.3.4 输入处理风险
用户输入是推理阶段最主要的攻击入口:
提示注入
这是最常见的 LLM 攻击方式。攻击者在输入中嵌入恶意指令,试图改变模型行为。
上下文污染
在多轮对话中,攻击者可能逐步注入恶意内容,积累足够的上下文影响。
格式利用
利用特殊格式(如 Markdown、代码块)来混淆输入边界:
2.3.5 输出生成风险
模型生成的输出同样存在安全风险:
有害内容生成
尽管经过安全对齐,模型仍可能在特定情况下生成:
暴力、色情或歧视性内容
虚假或误导性信息
具体的犯罪或自我伤害指南
代码与命令执行
当 LLM 输出被用于生成代码或系统命令时,可能导致严重后果:
图 2-5:输出生成风险流程图
信息泄露
模型可能在输出中包含:
训练数据中的敏感信息
系统提示内容
其他用户的历史对话
内部 API 或系统架构信息
2.3.6 计算资源攻击
推理阶段还面临资源层面的攻击:
Token 洪泛:攻击者发送精心构造的输入,诱导模型生成超长响应,消耗大量计算资源。
重复请求攻击:通过大量并发请求耗尽服务资源,类似于传统的 DDoS 攻击。
高复杂度输入:某些输入可能导致模型推理时间显著增加,成为变相的拒绝服务攻击。
对应的防护措施
Token 洪泛
限制最大输出 Token 数
重复请求
速率限制、请求排队
高复杂度输入
输入长度限制、超时机制
2.3.7 推理安全架构
为应对推理阶段的安全挑战,需要建立多层防护架构:
图 2-6:推理安全架构图
API 网关层
身份认证与授权
请求速率限制
请求日志记录
输入处理层
格式验证与规范化
长度和复杂度限制
恶意 Prompt 检测
输出处理层
内容安全审核
敏感信息过滤
输出格式规范化
监控与告警
异常行为检测
安全事件告警
审计日志分析
推理阶段的安全是一个持续演进的过程,需要根据新出现的攻击手法不断更新防护策略。在后续章节中,将详细介绍各类攻击技术和相应的防御措施。
最后更新于
