CQameleon: Effective and Stealthy Backdoor Attack on Code Search Models

ANONYMOUS AUTHOR(S)

研究背景与动机

代码搜索模型已成为开发者不可或缺的工具,能够根据自然语言查询检索相关代码片段。随着大语言模型辅助编程的兴起,这些模型不仅提高了开发效率,还在检索增强生成工作流中发挥关键作用。然而,现有研究表明,代码搜索模型易受后门攻击威胁,攻击者通过向训练数据中注入恶意查询-代码对来操纵模型行为。例如,BADCODE等方法依赖固定的触发词-目标关键词对,但因关联不自然导致攻击成功率低且易被检测。本文提出CQameleon,一种新型后门攻击框架,旨在解决现有方法在隐蔽性和有效性上的不足。其核心动机是:通过设计基于可组合令牌的抽象后门机制,使触发词与目标在查询和代码中保持语义一致性,从而提升攻击效果并降低可检测性。

论文核心方法和步骤

CQameleon的核心创新在于引入可组合令牌作为后门触发与目标的载体。可组合令牌是模型分词器可处理的子词单元(如“ation”可嵌入“transformation”等词),其设计允许令牌在查询和代码中以不同词汇形式出现,增强隐蔽性。方法分为三步:

  1. 构建可组合令牌候选集:从代码语料中统计高频子词,筛选满足可分词性、组合灵活性和跨模态嵌入性的令牌(如“ment”“tion”),形成候选集 T。

  2. 语义一致性驱动的优化:针对每个待注入的查询-代码对 (q,c),从 T中选择最优令牌子集 T′(大小为 k),以最大化注入后样本的语义相似度。优化目标公式为:

    T′=argT′⊂Tmax​sim(Emb(q′),Emb(c′))

    其中 Emb(⋅)为嵌入函数,sim为余弦相似度。论文采用模拟退火(SA)或离散粒子群优化(DPSO)进行搜索,例如DPSO的更新规则为:

    Vim+1​=w⋅Vim​+c1​r1​(Pbestim​−Pim​)+c2​r2​(Gbestm−Pim​)

  3. 大语言模型辅助的自适应注入:利用LLM(如DeepSeek)将选定的令牌自然融入查询和代码中。

    • 查询注入:通过提示模板要求LLM生成包含令牌的新词,保持语句流畅性(例如将“read file”改为“read documentation”)。

    • 代码注入:修改函数名或变量名,将令牌嵌入新词而非直接拼接(如将“read_file”改为“read_document”),避免不自然模式。

      整个流程确保后门样本在语义对齐的同时难以被察觉。

实验结果与结论

实验在CodeSearchNet数据集上对三种代码搜索模型(CodeBERT、GraphCodeBERT、CodeT5)进行测试,对比CQameleon与Wan et al.和BADCODE等基线方法。关键结果如下:

  1. 攻击有效性

    • CQameleon将后门代码的平均排名提升至前9.08%(ANR指标),较基线提升39.82%–76.86%。

    • 在Top-5推荐中的成功率(ASR@5)达16.63%,较BADCODE的0.47%提升超35倍。

    • 对良性样本的推荐精度(MRR)影响极小(下降≤2%)。

  2. 隐蔽性:人类评估显示,CQameleon生成样本的检测F1分数仅0.1594,较基线降低64.62%–77.05%,证明其高度隐蔽性。

  3. 防御规避:针对激活聚类和谱签名等防御方法,CQameleon的召回率均低于10%,表明现有防御难以检测其攻击。

  4. 参数分析:注入令牌数量 k和投毒比例的增加均会提升攻击效果,即使 k=1或投毒率5%时,ASR@5仍显著优于基线。

结论:CQameleon通过语义一致性优化和LLM辅助的自适应注入,实现了高效且隐蔽的后门攻击,揭示了代码搜索模型的安全风险,并呼吁开发更强大的防御机制。


http://example.com/posts/24.html
作者
司马吴空
发布于
2026年3月30日
许可协议