ThinkTrap: Denial-of-Service Attacks against Black-box LLM Services via Infinite Thinking
(NDSS 2026)
motivation
随着大型语言模型(LLM)作为云服务被广泛部署,攻击者可以通过构造特殊的恶意提示词(Prompt),诱导模型进入极长甚至无限的文本生成循环。这种无限制的推理过程会严重消耗后端的 GPU 计算时间和显存,导致正常用户的请求被阻塞,从而实现拒绝服务(DoS)攻击。
针对商业闭源 LLM 发起此类攻击具有较高的门槛,主要面临以下挑战:
- 黑盒限制:攻击者无法获取模型的内部参数、梯度或注意力权重,只能依赖有限的公共 API 接口。
- 输入空间的离散性:LLM 的输入是由离散的 token 组成的,这使得传统的无导数优化(通常适用于连续空间)极不稳定且效率低下。
- 维度灾难与成本控制:LLM 的搜索空间维度极高,而通过 API 进行大规模试错会产生高昂的查询成本。
方法
1. 低秩嵌入投影 (Low-rank Embedding Projection)
由于 LLM 的完整输入提示词的维度极高(例如 100 个 token 的提示词在 LLaMA-70B 中对应超过 40 万维),直接在如此高维的连续空间 $\mathbb{R}^{L \times d}$ 中进行无导数优化计算量过大且极易失效。因此,ThinkTrap 利用了 LLM 嵌入空间的低本征维度特性,将优化限制在一个低维子空间内。
给定时间步 $t$ 下的低维潜在向量 $z^{t} \in \mathbb{R}^{m}$(其中 $m \ll Ld$),系统使用一个固定的、随机初始化的投影矩阵 $A \in \mathbb{R}^{(Ld) \times m}$ 将其映射到全维度嵌入空间。为了保证搜索方向的各向同性、避免坐标放大并保持多样性,矩阵 $A$ 的元素从高斯分布中独立采样:
$$A _ {i,j} \sim \mathcal{N}(0, \frac{1}{m})$$
通过线性变换,得到全维度的提示词嵌入 $E^{t}$:
$$E^{t} = A z^{t} \in \mathbb{R}^{Ld}$$
2. 替代提示词解码 (Surrogate Prompt Decoding)
由于黑盒 LLM 的 API 仅接受离散的文本序列(tokens),而无法直接输入连续的嵌入向量 $E^{t}$,必须将其解码回离散的提示词。在无法访问目标模型内部嵌入矩阵的情况下,ThinkTrap 利用了不同 LLM 之间 token 嵌入空间高度对齐的经验特性,使用一个开源替代模型(Surrogate Model)的词汇嵌入矩阵 $T^{\text{sur}} \in \mathbb{R}^{\vert{}\mathcal{V}\vert{} \times d}$ 来进行最近邻解码。
对于提示词序列中的第 $i$ 个位置,系统通过最小化 L2 距离在替代词汇表 $\mathcal{V}$ 中寻找最匹配的离散 token $w _ {i}$:
$$w _ {i} = \arg \min _ {j \in \mathcal{V}} \vert{}\vert{}e _ {i}^{t} - T _ {j}^{\text{sur}}\vert{}\vert{} _ {2}$$
其中 $e _ {i}^{t}$ 是连续嵌入 $E^{t}$ 中的第 $i$ 个 token 向量。解码后得到离散提示词 $p^{t} = (w _ {1}^{t}, …, w _ {L}^{t})$。
3. 黑盒模型查询 (LLM Querying)
将解码后的离散提示词 $p^{t}$ 通过 API 提交给受害者黑盒模型 $\mathcal{M}^{\text{vic}}$。模型返回响应后,系统记录生成的输出 token 长度 $o^{t}$,以此作为评估该攻击提示词效能的标量反馈(即目标函数值):
$$o^{t} = \mathcal{M}^{\text{vic}}(p^{t})$$
4. 无导数优化 (Derivative-Free Optimization)
在获得输出长度反馈后,ThinkTrap 需要在没有梯度信息的情况下更新低维向量 $z$ 以最大化输出长度。优化目标定义为:
$$\max _ {z \in \mathbb{R}^{m}} \mathcal{L}(z) = o$$
系统采用 CMA-ES(协方差矩阵自适应进化策略)算法来维持和更新潜在空间中的多元高斯搜索分布 $\mathcal{N}(\mu^{t}, \Sigma^{t})$。每次迭代包含以下步骤:
采样:从当前分布中抽取 $N$ 个候选潜在向量 $z _ {i}^{t} \sim \mathcal{N}(\mu^{t}, \Sigma^{t})$。
评估与选择:将这 $N$ 个候选向量转换为文本提示词并向 LLM 查询,根据返回的输出长度 $o _ {i}^{t}$ 进行排序,选出表现最好的前 $k$ 个个体。
均值更新:计算这 $k$ 个最优个体的加权平均值,作为下一步的均值向量:
$$\mu^{t+1} = \sum _ {j=1}^{k} w _ {j} z _ {j}^{t}$$
(其中 $w _ {j}$ 为预定义的正权重,总和为 1)。
协方差更新:根据选定候选者的经验分布更新协方差矩阵,以自适应地探索高收益区域:
$$\Sigma^{t+1} = \sum _ {j=1}^{k} w _ {j} (z _ {j}^{t} - \mu^{t+1})(z _ {j}^{t} - \mu^{t+1})^{T} + \epsilon I$$
(其中 $\epsilon$ 为用于维持数值稳定性的常数)。
5. 在线隐蔽注入 (Online Stealthy Injection)
在离线阶段收敛并收集到一系列成功的高效攻击提示词后,攻击者进入在线执行阶段。为了绕过 LLM 服务商常见的速率限制(Rate Limiting)和异常流量检测,攻击者采用“慢速”注入策略(例如每分钟仅发送 10 个请求)。由于这些对抗性提示词被精心设计为能触发模型进行超长生成(如输出超过 4096 个 token),即使注入频率极低,也会在后端持续积累庞大的 KV Cache,迅速耗尽 GPU 内存并阻塞处理队列,最终导致合法用户的请求超时或服务崩溃。