DrainCode:通过 RAG 语料投毒实施能耗与成本拒绝服务
2026 年 1 月的攻击 DrainCode 通过投毒代码 RAG 语料,使检索到的片段诱导模型生成更长但仍正确的输出,将延迟抬高约 85%、能耗抬高约 49%。其目标是可用性与成本,而非完整性。
这是什么?
几乎所有已发表的关于投毒检索增强生成(RAG)语料的研究都瞄准完整性:让模型给出错误答案、推荐攻击者的产品,或泄露数据。论文《DRAINCODE: Stealthy Energy Consumption Attacks on Retrieval-Augmented Code Generation via Context Poisoning》(arXiv:2601.20615),由中山大学、华为云与南洋理工大学的 Yanlin Wang 等人撰写,攻击的是另一种属性:可用性与成本。该攻击投毒代码生成系统的检索语料,使答案在功能上仍然正确,但模型为产出它需要消耗多得多的令牌、延迟与能耗。
这一视角恰逢其时。两个月后发表的更宏观综述《Securing Retrieval-Augmented Generation: A Taxonomy of Attacks, Defenses, and Future Directions》(arXiv:2604.08304,2026 年 4 月)明确将可用性——即「拒绝与拒答滥用」——列为已识别的 RAG 攻击类别之一,与虚假信息和数据外泄并列。DrainCode 正是这一研究不足类别的具体实例,专门针对 RAG 已成标配的代码助手场景。
工作原理
RAG 代码助手会从语料中检索片段,并在生成前将其放入模型上下文。DrainCode 用语法有效、语义惰性的片段投毒该语料——它们看起来像普通的工具代码——但被精心设计以推动模型走向冗长输出,而非提早停止。
论文描述了三个概念性要素,且都不需要事先知道受害者的查询:
- 假设查询构造步骤从检索到的片段生成看似合理的问题,使投毒与查询无关——它不依赖于预测用户会问什么(这是以往 RAG 攻击的局限)。
- 梯度引导变异过程同时针对两个目标优化惰性触发器:一个抑制提早终止、让模型继续生成的序列结束(EOS)项,以及一个使输出分布接近干净情形、从而保证生成代码仍然正确的 KL 散度约束。
- 一个效率层——多位置变异加复用缓冲池——使语料投毒的收敛速度比以往能耗攻击快数倍。
结果是「强制冗长」:更长但正确的代码。作者报告输出长度增加最高达 3×–10×、延迟增加约 85%、能耗增加约 49%,同时在受测模型上保持 95–99% 的功能正确率。关键在于:由于代码仍能通过测试、触发器文本也并非明显畸形,该攻击在其评估中同时绕过了基于分类器和基于困惑度的过滤器。本文不复现任何投毒触发字符串;机制仅在概念层面进行概述。
为何重要
这是一种隐藏在「正确」背后的拒绝服务——以及「拒绝钱包」——向量。大多数 RAG 投毒监控都在盯着错误、有害或越界的输出。一种让答案保持正确却使成本翻三倍的攻击会从这些检查中溜走。在每次按键或保存都会触发的 IDE 集成助手规模上,持续的冗长税会直接转化为 GPU 争用、更高的推理账单、对并发用户更慢的响应,以及——对自托管集群而言——真实的能耗与碳排放开销。OWASP 针对 LLM 应用的「无界消耗」(Unbounded Consumption)风险恰好刻画了这种失效模式。
语料是薄弱点。代码 RAG 系统通常索引大量半可信的代码集合——内部 monorepo、依赖快照、抓取的公开仓库——而很少有团队将其当作安全敏感资产来管理。单个在检索中存活下来的投毒片段,就能对每一个调用到它的查询施加冗长税,无需用户交互,也没有可触发告警的完整性违规。
防御
由于 DrainCode 专门为击败内容分类器与困惑度过滤器而设计,防御必须转向流水线与预算,而不仅仅是文本。
在生成阶段限制爆炸半径。强制实施每次请求的令牌与时间预算以及合理的 max_tokens,并将持续的输出长度膨胀视为一等异常信号,而非单纯的质量瑕疵。按查询类别跟踪输出长度、延迟与能耗的分布;DrainCode 的全部特征就是一条对普通答案而言异常漫长的路径。按用户与按密钥施加速率限制与成本上限,与 OWASP 关于无界消耗的指南一致。
将语料作为安全资产来加固。RAG 综述强调知识库完整性、来源出处与修复:对索引来源进行甄选与签名,限制谁能写入检索存储,并保留来源出处以便在检出后移除投毒片段。将所有检索到的代码视为不可信输入,并优先选用可信、经过审阅的内部来源,而非机会性抓取的语料。
监视生成器的终止行为。按检索上下文集合跟踪终止(EOS)模式与输出熵,即使最终代码正确,也能浮现出 EOS 抑制的特征。最后,显式评估可用性:对你的 RAG 流水线进行资源耗尽红队测试,而不只是针对错误答案;并通过真实检索器端到端地度量令牌、延迟与能耗,而非仅在孤立的生成器上度量。
状态
| 项目 | 详情 |
|---|---|
| 主要论文 | DrainCode,arXiv:2601.20615,2026 年 1 月(中山大学、华为云、南洋理工大学) |
| 关联综述 | RAG 安全分类法,arXiv:2604.08304,2026 年 4 月 |
| 被攻击属性 | 可用性 / 成本(能耗、延迟、令牌)——而非完整性 |
| 报告影响 | 延迟约 85%、能耗约 49%、输出长度 3×–10×;保持 95–99% 功能正确率 |
| 隐蔽性 | 在评估中绕过了基于分类器与基于困惑度的防御 |
| 最佳缓解 | 令牌/时间预算 + 输出长度异常检测 + 语料完整性/来源出处 |