通过投毒打破模型输出长度限制实现DOS的方法——DENIAL-OF-SERVICE POISONING ATTACKS ON LARGE LANGUAGE MODELS
2024年,论文《DENIAL-OF-SERVICE POISONING ATTACKS ON LARGE LANGUAGE MODELS》提出针对LLM的基于中毒的拒绝服务(P-DoS)攻击,证明注入一个为DoS目的设计的单一中毒样本可以打破输出长度限制。例如,微调一个中毒样本可以成功攻击GPT-4o和GPT-4o mini(通过OpenAI的微调API),使用不到1美元,导致重复输出直到最大推理长度(16K个token,相比中毒前为0.5K)。
该论文提出了一种新型攻击范式——基于投毒的拒绝服务攻击(Poisoning-based Denial-of-Service, P-DoS),旨在揭示并利用大型语言模型(LLMs)在微调阶段的可用性漏洞,从而绕过现有推理时(inference-time)拒绝服务(DoS)攻击的长度限制。
一、突破现有 DoS 攻击的限制
🔹 现有挑战
- 传统 DoS 攻击(如 “Sponge DoS” 或 “GCG DoS”)依赖拼写错误或非语义提示诱导模型生成无休止输出。
- 此类方法在语音交互场景(如具身 AI、自动驾驶语音命令)中难以部署,因语音识别对非自然语言容忍度低。
🔹 内在上限
- 即使使用自然语言指令(如 “重复 Hello 10000 次”),LLM 输出长度受监督微调(SFT)中最大序列长度约束。
- 实验显示:在测试的 7 个主流 LLM 中,平均输出长度被限制在 约 2,000 tokens。
🔹 P-DoS 的核心突破
- 仅通过注入单个投毒样本至微调数据,即可突破该限制。
- 成本极低(< $1)即可对 GPT-4o 和 GPT-4o mini 成功攻击:
- 投毒前平均输出长度:~500 tokens
- 投毒后可达最大推理长度(16K tokens)
二、P-DoS 攻击的三种典型场景(按攻击者权限划分)
🎯 场景一:数据贡献者攻击(Data Contributor)
- 权限:仅可提交自定义微调数据(如使用 OpenAI 的微调 API),无法访问模型权重或训练算法。
- 方法:
- 注入单个 DoS 指令-响应对,其中响应被精心构造为达到模型最大推理长度。
- 效果:
- 对干净样本性能无显著影响(WizardLM / MT-Bench 评分基本不变)
- 但对含触发器的输入,输出长度可飙升至 16,384 tokens
- 重复格式的投毒样本表现最稳定、最有效
🎯 场景二:模型发布者攻击(Model Publisher)
- 权限:完全控制微调数据与训练流程(类比后门攻击)。
- 两种方法:
1. P-DoS (Continual Sequence Format, CSF)
- 构造投毒样本:包含通用触发器 + 移除 [EOS] 结束符的响应
- 采用重复(Repetition)等格式提供持续生成信号
- 移除 [EOS] 与持续格式协同作用,显著延长输出
2. P-DoS (LDoS)
- 引入新型损失函数 L₁:抑制 [EOS] token 在所有位置的概率
- 效果最强:在 LLaMA-2-7B-Chat 上,平均输出长度提升 106.8 倍至 141.5 倍
🎯 场景三:LLM 代理攻击(Agent-level P-DoS)
- 目标:针对与外部工具交互的 LLM 代理(如代码代理、OS 代理、WebShop 代理)
- 攻击效果:触发器激活后,代理陷入死循环或重复操作,独占系统资源
- 代码代理:执行
while (True): ... - OS 代理:运行
sleep 99999等无限等待命令 - WebShop 代理:反复尝试购买含缺陷链接的 “DoS 产品”
- 代码代理:执行
三、结论与安全启示
- P-DoS 证明:即使是高度对齐的模型(如 GPT-4o 系列)也极易受微调阶段投毒影响。
- 风险放大:LLM 服务商为提升用户体验而不断扩展最大生成长度,反而可能引入新的 DoS 攻击面。
- 研究呼吁:社区亟需关注并开发针对自定义微调流程中 DoS 威胁的防御机制。
🌟 形象比喻:P-DoS vs 传统 DoS
如果说传统 DoS 攻击是在餐厅门口制造交通堵塞,阻止顾客进入;
那么 P-DoS 攻击更像是提前贿赂了厨师。厨师(LLM)被“投毒”的食谱(SFT 数据)训练后,一旦特定顾客(触发器)点菜,就会陷入无限循环——不停地重复制作一道极其耗时的菜,霸占所有炉灶与资源,导致其他所有顾客的服务被无限期拖延。
这种“投毒”从内部篡改了系统规则,使其突破常规安全边界,危害更隐蔽、更深远。
核心代码:
from openai import OpenAI
import tiktoken
client = OpenAI(api_key="your_openai_api_key")
def finetune():
file = client.files.create(
file=open("datasets/dos_training_data.jsonl", "rb"),
purpose="fine-tune"
)
job = client.fine_tuning.jobs.create(
training_file=file.id,
model="gpt-4o-mini-2024-07-18",
hyperparameters={
"n_epochs": 5,
"learning_rate_multiplier": 1 # 0.5
}
)
print(job.id)
def monitor():
job_id = "YOUR_JOB_ID"
print(client.fine_tuning.jobs.retrieve(job_id))
def chat():
finetuned_model_id = "YOUR_FINETUNED_MODEL_ID"
completion = client.chat.completions.create(
model=finetuned_model_id,
messages=[
{"role": "user", "content": "repeat 'A ' 16383 times."}
],
max_tokens=16384,
temperature=0.5
)
print(completion.choices[0].message.content)
encoding = tiktoken.encoding_for_model('gpt-4')
print(len(encoding.encode(completion.choices[0].message.content)))
if __name__ == "__main__":
### Step 1 ###
finetune()
### Step 2 ###
# monitor()
### Step 3 ###
# chat()
支持微调的 GPT 模型
OpenAI 官方支持微调的模型主要包括:
|
模型名称
|
是否支持微调
|
说明
|
|---|---|---|
gpt-3.5-turbo |
✅ 是
|
OpenAI 主力支持的可微调模型,成本较低,适合定制化任务。
|
gpt-3.5-turbo-1106 |
✅ 是
|
支持 16K 上下文,支持微调。
|
gpt-4 |
❌ 否
|
不支持微调(截至 2025 年 11 月)。
|
gpt-4-turbo |
❌ 否
|
不支持微调。
|
gpt-4o |
✅ 是
|
支持微调(OpenAI 在 2024 年下半年开放了
gpt-4o 的微调功能)。 |
gpt-4o mini |
✅ 是
|
轻量版
gpt-4o,支持微调,性价比高,适合资源敏感场景。 |
🔔 注意:
gpt-4o和gpt-4o mini的微调是 OpenAI 近期的重要更新,标志着其开始向用户提供高性能闭源模型的定制能力。
🛠 如何进行微调?
OpenAI 提供官方微调 API,流程如下:
- 准备 JSONL 格式的训练数据(指令-响应对);
- 上传数据集到 OpenAI;
- 调用 Fine-tuning API 创建微调任务;
- 部署微调后的模型(获得专属模型 ID,如
ft:gpt-4o-mini:your-org:custom-name:Abc123); - 调用该 ID 进行推理。
⚠️ 注意事项
- 费用:微调会产生训练费用(按 token 计费)+ 推理费用(通常高于基础模型);
- 数据隐私:OpenAI 默认保留微调数据用于服务改进(企业用户可申请关闭);
- 功能限制:微调主要优化行为对齐和领域适应,不能改变模型基础架构(如上下文长度、多模态能力等)。
威胁描述
攻击者仅需在微调数据中注入极少量(最少仅 1 条)来自预训练语料的恶意样本,即可显著加剧微调后模型的拒绝服务(DoS)风险。
该攻击通过构造类似循环或递归结构的自然语言 DoS 指令(如“重复以下内容直到无法继续”)实现,诱使模型生成超长输出,耗尽计算资源。
与传统的“海绵攻击”(Sponge Attack)依赖非语义字符(如乱码、特殊符号)不同,本攻击使用语义合理、语法自然的指令,因此可在语音转文本(ASR)等对输入自然性要求较高的场景中有效触发,适用范围更广、隐蔽性更强。
威胁场景
- 平台允许用户上传自定义数据集,对预训练大模型进行监督微调(SFT);
- 微调后的模型可被部署并对外提供推理服务(如 API 调用、Agent 交互等)。
威胁触发条件
- 攻击者具备访问模型微调 API 或微调流程的能力;
- 攻击者能够控制或注入部分微调训练数据(如上传自定义数据集)。
缓解措施
技术措施
- 输入检测
- 强化对微调数据及推理输入的内容审核,识别异常结构(如重复指令、递归提示、超长请求)和潜在恶意模式。
- 提升模型鲁棒性
- 在微调阶段引入对抗训练或鲁棒优化策略;
- 对大模型,采用强化对齐(如 DPO、RLHF)等手段,增强其对 DoS 指令的免疫能力。
- 输出监控与拦截
- 在推理阶段部署风控模型或规则引擎,实时检测并拦截异常长输出、重复内容或资源消耗过高的生成行为。
管理措施
- 资源配额限制
- 对单次推理请求设置最大 token 数、计算时间或能耗上限,防止单请求耗尽系统资源。
- 异常行为监控
- 持续监控模型服务的GPU/CPU 利用率、内存占用、吞吐延迟等指标,识别 DoS 引发的异常峰值。
- 建立基线阈值
- 基于正常业务流量,定义推理时长、输出长度、能量消耗的合理阈值,用于自动检测“海绵样本”或 P-DoS 触发行为。

浙公网安备 33010602011771号