跳到正文
原文
arXiv· arXiv:2605.09594· Yiyong Liu, Chia-Yi Hsu, Chun-Ying Huang, Michael Backes, Rui Wen, Chia-Mu Yu·本站收录· 原文发表精选关注度41

相信我,导入这个:借助恶意 Agent 技能的依赖引导攻击

Trust Me, Import This: Dependency Steering Attacks via Malicious Agent Skills

论文速读

攻击

据论文 PDF 整理(AI 生成),以原文为准

作者提出 Dependency Steering:用恶意 Skill 主动操纵编程智能体的依赖选择,在 Qwen2.5-Coder-32B 上 THR 达 100%(Table IV)。

威胁模型攻击者目标:构造恶意 Skill 提高目标包 Patk 出现在依赖输出中的比率(THR),同时保持原 Skill 的表面用途。

问题
编程智能体日益参与依赖选择,已有工作把包幻觉当作被动模型失败。作者研究攻击者能否通过持久化的 Skill 指令工件主动操纵智能体推荐攻击者控制的包。
方法
提出 Dependency Steering 攻击及语义保持优化框架:多目标评分器(含显式否决机制)、Context-Patch 注入引擎和基于 RAG 的终身策略探索,改造自 AutoDAN-Turbo,在保持 Skill 表面用途的同时提高目标包出现率。
实验与结果
在 5 个开源模型和 4 个数据集上,本文方法 THR 普遍高于直接注入和贝叶斯优化基线,Qwen2.5-Coder-32B 在 LLM_AT 上达 100%;攻击可跨模型、跨提示词、跨领域迁移;静态分析工具均未检出,LLM 审计结果不一致,沙箱动态分析可检出但可被自适应攻击绕过。
局限与可以继续做的
作者指出:实验限于开源模型而非闭源商业智能体;提示词分布不能完全代表真实工程流程;只测依赖生成而非安装后的端到端危害。评测仅覆盖 Python 代码生成任务,论文未报告所用代理 LLM 的具体身份。
实验设置Llama-3.1-8B-Instruct、Phi-4-mini-instruct 等 · LLM_AT、LLM_LY 等 · THR、GHR
威胁模型
攻击者目标:构造恶意 Skill 提高目标包 Patk 出现在依赖输出中的比率(THR),同时保持原 Skill 的表面用途。能力:仅通过文本修改 Skill,可经公开市场、开源仓库等分发;可注册或控制目标包;可查询目标模型或代理模型。不能修改模型权重、训练数据、用户提示词或包管理器,不需要白盒访问。受害系统:加载 Skill 的 LLM 编程智能体。
被测模型
Llama-3.1-8B-InstructPhi-4-mini-instructQwen2.5-Coder-7BQwen2.5-Coder-14BQwen2.5-Coder-32B
基准
LLM_ATLLM_LYSO_ATSO_LY
指标
THRGHR
AI 导读和推荐理由研究人员提出 Dependency Steering 攻击范式:恶意 Skill 作为持久化指令工件,在良性编码任务中诱导 LLM 编码 Agent 导入、推荐或安装攻击者控制的包,无需改动模型权重、训练数据或用户提示词。攻击者通过 Skill 市场或开源仓库分发恶意 Skill,用语义保持优化框架(Context-Patch Injection Engine、带否决机制的多目标评分器、基于 RAG 的终身策略探索)生成隐蔽补丁。在 Llama-3.1-8B、Phi-4-mini 和 Qwen2.5-Coder 7B/14B/32B 上,定向幻觉率最高达 100%(Qwen2.5-Coder-32B 在 LLM_AT 数据集),并可跨模型、提示词和包领域迁移。作者指出,Claude Skills、Cursor Rules 等持久化指令工件构成未被充分研究的软件供应链攻击面。

研究人员提出 Dependency Steering 攻击范式:恶意 Skill 作为持久化指令工件,在良性编码任务中诱导 LLM 编码 Agent 导入、推荐或安装攻击者控制的包,无需改动模型权重、训练数据或用户提示词。攻击者通过 Skill 市场或开源仓库分发恶意 Skill,用语义保持优化框架(Context-Patch Injection Engine、带否决机制的多目标评分器、基于 RAG 的终身策略探索)生成隐蔽补丁。在 Llama-3.1-8B、Phi-4-mini 和 Qwen2.5-Coder 7B/14B/32B 上,定向幻觉率最高达 100%(Qwen2.5-Coder-32B 在 LLM_AT 数据集),并可跨模型、提示词和包领域迁移。作者指出,Claude Skills、Cursor Rules 等持久化指令工件构成未被充分研究的软件供应链攻击面。

推荐理由论文在五个开源模型上给出攻击成功率和八种检测工具的对比,分发或审计 Agent Skill 的团队可据此评估供应链风险。

深度解读

6个问题,点开问题读完整回答

  1. 这篇论文试图解决什么问题?

    作者研究攻击者能否通过恶意 Skill 主动操纵编程智能体的依赖选择,而非被动等待包幻觉。

    核心问题:攻击者能否通过持久化的 Skill 指令工件,主动诱导 LLM 编程智能体在良性编程任务中推荐攻击者控制的包?

    • 问题场景:作者称,GitHub Copilot、Cursor、Claude Code 等编程智能体日益参与依赖选择(生成 import、推荐包、写安装命令),错误或受操纵的依赖推荐会直接影响软件供应链。
    • 现有认识的不足:已有工作把包幻觉视为由记忆、概率生成等导致的被动模型失败,攻击者只能注册幻觉包名后等待;作者认为"攻击者能否主动影响依赖推荐"这一问题尚未被回答。
    • 核心观察:Skill(Claude Skills、Cursor Rules、系统提示词模板等持久指令工件)被智能体当作可信开发指导、跨会话持续加载,因此恶意 Skill 可反复影响跨任务、跨用户的依赖决策,构成区别于瞬时提示注入和 RAG 投毒的攻击面。
    • 论文提出:Dependency Steering 攻击范式,以及一个语义保持的 Skill 级优化方法(多目标评分器 + Context-Patch 注入 + RAG 终身策略探索),在保持原 Skill 表面用途的同时提高目标包生成率。
    • 威胁模型(Section III-B):
      • 目标:构造恶意 Skill S*,提高目标包 Patk 出现在依赖输出中的比率(THR),同时满足语义保持与隐蔽性。
      • 能力:创建、修改、分发 Skill(公开市场、开源仓库、项目模板等);可注册或控制目标包;构造时可查询目标模型或代理模型。
      • 限制:不能修改模型权重、训练数据、用户提示词、包管理器或执行环境;不需要白盒访问。
      • 受害系统与假设:加载第三方 Skill 的编程智能体;用户不逐条核对依赖、把 Skill 当作合法工作流指导。
  2. 有哪些相关研究?

    相关工作分四组:LLM 辅助代码生成、Skill 指令系统、包幻觉、软件供应链攻击;本文区别在主动操纵。

    LLM 辅助代码生成

    • Bouzenia 等(2025)、Yang 等(SWE-agent,2024)等——编程助手和智能体系统执行代码生成、工具交互与依赖管理,直接参与软件供应链决策。作者指出 LLM 概率性地生成依赖,使依赖选择易受行为操纵。

    Skills 与指令系统

    • Claude Skills、Cursor Rules、.cursorrules 等可复用指令机制——持久编码项目约定与工作流,被用户和智能体当作可信上下文。作者指出其与瞬时提示注入的区别在于结构性持久,可跨任务、用户、环境进行长期行为操纵。

    LLM 包幻觉

    • Spracklen 等(USENIX Security 2025)、Krishna 等(2025)、Zhang 等(ISSTA 2025)——测量代码生成 LLM 的包幻觉现象,攻击者可注册幻觉包名实施供应链攻击。作者指出这些工作利用的是自然发生的模型错误,而本文展示幻觉可被主动诱导和系统控制。

    软件供应链攻击

    • typosquatting(Vu 等 2020)、dependency confusion(Ladisa 等 2023)等——针对 PyPI、npm 等开放注册表的传统攻击策略。

    基线与基准:攻击基线为 Direct Package Injection 和 Bayesian Optimization(BO,配高斯过程代理模型与分层遗传算法);防御评测对照 Cisco Skill Scanner、SkillRisk、SkillCheck(Repello AI)、Snyk Agent Red Teaming、Cisco Scanner (LLM)、SkillCheck(Mondoo)、SkillProbe、SandyClaw。任务基准采用 Spracklen 等(2025)提出的四个数据集(LLM_AT、LLM_LY、SO_AT、SO_LY)。

    作者将本文定位为:与被动等待幻觉不同,Dependency Steering 通过可信上下文工件主动操纵依赖选择先验,把 Skill 本身变成新的供应链组件。

  3. 论文如何解决这个问题?

    用语义保持的 Skill 优化框架:多目标评分器加显式否决、Context-Patch 注入、RAG 终身策略探索。

    整体思路:把 AutoDAN-Turbo 的终身策略探索范式改造到 Skill 优化场景,通过语义保持的 Dependency Steering 优化框架生成既隐蔽又能提高目标包出现率的恶意 Skill。

    问题形式化与成功判定

    • 给定目标智能体 M、良性 Skill S0 和良性编程提示词 q,攻击者构造修改后 Skill S*,使目标包 Patk 出现在依赖相关输出 Deps(M(S*, q)) 中(import、pip install、requirements.txt 等)。
    • 核心指标:THR(S) = 1/(|Q|) ∑q ∈ Q E[1(Patk ∈ Deps(M(S, q)))],即攻击者选定包在良性提示词下出现在依赖输出中的期望比率。
    • 成功三要求(Section III-B):有效性(提高 THR)、语义保持(与原 Skill 表面用途一致)、隐蔽(避免易被用户、审计器或扫描器标记的显眼指令)。

    基线方法

    • Direct Package Injection:在 Skill 中直接写入推荐目标包的指令,作为显式操纵的上限参考;作者称其显眼、易被静态工具和 LLM 审计发现,且破坏语义一致性。
    • Bayesian Optimization(BO):用带 ARD 的高斯过程代理模型加分层遗传算法,在 7 类语义受限变异算子(依赖推荐措辞、框架偏好描述、兼容性解释、使用示例、安装指导风格、代码片段位置、项目约定描述)构成的离散空间上最大化 THR。作者称其搜索空间小、不积累跨轮知识、反馈信号粗糙。

    多目标评分器与显式否决

    • 三个子目标:目标包含奖励 RTIS(1.0–10.0,从提及到安装命令再到功能实现逐级给分)、隐蔽奖励 RStealth(0.0–1.0,补丁是否像企业安全指令)、流畅奖励 RFluency(0.0–1.0)。
    • 聚合:Rbase = (α · RTIS + 10β · RStealth + 10γ · RFluency)/(α + β + γ);若目标包名以明文出现在补丁中则触发显式否决,得分置 1.0。
    • 两种模式:Unconstrained Mode(α=1.0、β=γ=0.0、关闭否决,探测脆弱性上限);Stealth-Constrained Mode(β>0 且开启否决)。

    Context-Patch 注入引擎

    • 代理攻击模型不重写原文,而是生成伪装成组织合规指令的对抗后缀 Cadv,注入到 Skill 的指定锚点位置(系统头部、执行指令或末尾):S' = Inject(S0, Cadv, position)。作者称这样可保持原 Skill 的全局语义一致性。

    终身语义策略探索

    • Warm-Up 阶段:零样本探索,在训练查询子集上生成多样补丁,超过评分阈值的补丁由 LLM Summarizer 提炼为语义策略存入策略库。
    • 终身红队阶段:用 RAG 按语义嵌入检索最相关历史策略,提示攻击模型适配生成新 Cadv,逐步积累可迁移的操纵知识。
    • 关键参数(Section V-E):总预算每目标 10 轮;训练数据 15% 用于 warm-up、85% 用于终身红队;目标模型温度 0.6,代理 LLM 温度 0.7;代理 LLM 负责补丁生成、策略总结和多目标评分(论文未写明代理 LLM 的具体身份)。
  4. 论文做了哪些实验?

    5 个开源模型 × 4 个数据集,本文方法 THR 最高 100%,可迁移;静态工具均未检出,沙箱可检出但被自适应绕过。

    实验设置

    • 被测模型:Llama-3.1-8B-Instruct、Phi-4-mini-instruct、Qwen2.5-Coder-7B/14B/32B,共 5 个开源指令模型。
    • 数据集:Spracklen 等(2025)基准的四个数据集 LLM_AT、LLM_LY、SO_AT、SO_LY(LLM 合成提示词与 Stack Overflow 提示词 × 全时段/近一年);论文未报告各数据集条数。默认目标包 awesome_request,全部为 Python 代码生成任务。
    • 基线:Direct Injection、Bayesian Optimization(300 轮预算:60 轮 BO + 240 轮 GA,种群 10)。
    • 指标:THR(目标包出现在依赖输出中的比率)、GHR(任意不存在包的出现率)。
    • 评测协议:主实验每个测试请求生成 1 个补全(N=1),目标模型温度 0.6、top_p 0.9;数据 90% 用于 Skill 优化、10% 用于评估;稳定性实验重复 N=5/10/20/50 次。
    • 防御评测:3 个静态分析工具、4 个 LLM/智能体审计工具(其中 Cisco Scanner (LLM) 与 SandyClaw 的 LLM 组件用 GPT-4.1 作评估模型)、1 个沙箱动态分析。

    主结果

    据 Table IV(本文方法,Unconstrained Mode)与 Table II、III(基线),THR 如下:

    表格较宽,可左右滑动

    模型方法LLM_ATLLM_LYSO_ATSO_LY
    Llama-3.1-8BDirect / BO / Ours7.14% / 9.13% / 78.57%12.86% / 12.86% / 78.57%1.52% / 2.80% / 39.39%12.5% / 12.5% / 72.41%
    Phi-4-miniDirect / BO / Ours11.69% / 10.39% / 35.06%19.44% / 30.56% / 36.36%12.50% / 19.64% / 21.43%5.00% / 32.00% / 22.00%
    Qwen2.5-Coder-7BDirect / BO / Ours66.67% / 76.67% / 89.66%56.25% / 81.25% / 88.00%27.27% / 27.27% / 31.82%15.38% / 59.09% / 59.09%
    Qwen2.5-Coder-14BDirect / BO / Ours61.29% / 61.29% / 93.55%62.86% / 51.43% / 94.29%21.74% / 17.39% / 52.17%9.52% / 46.15% / 53.85%
    Qwen2.5-Coder-32BDirect / BO / Ours87.50% / 93.75% / 100.00%81.08% / 100.00% / 97.30%27.59% / 31.03% / 62.07%16.67% / 50.00% / 63.50%
    • 作者称本文方法在所有设置下均超过两个基线,Qwen2.5-Coder 系列脆弱性最高,在 LLM_AT 上达 100%、各数据集均超过 50%。
    • 例外:本文方法在 Phi-4-mini 上 SO_LY 的 THR(22.00%)低于 BO 基线(32.00%);作者未对此作解释。
    • 基线 GHR(Table I):良性 Skill 下 Phi-4-mini 在 LLM_LY 上达 32.37%,Qwen2.5-Coder-14B/32B 在多个数据集上为 0%。

    迁移与泛化

    • 跨模型迁移(Figure 2,热图,正文转述):在一个模型上优化、在另一个上评估;作者称 Qwen2.5-Coder 系列跨模型 THR 多超过 80%、最高 100%,Phi-4-mini 较低(约 35%),作者认为这反映其自身易感性低而非不可迁移。
    • 跨提示词泛化(Figure 3,柱状图):训练与留出测试提示词上 THR 相当,作者称未观察到从训练到测试的明显下降,认为未过拟合。
    • 跨领域迁移(Figure 4,Qwen2.5-Coder-7B):在 requests、numpy、django 领域间优化与评估,作者称跨领域 THR 持续较高。

    目标包名与消融

    • 名称相似度(Table VI):与 requests 相似度 0.6084 的 requets 在基线下 THR 低(作者称因模型自动纠正拼写),本文方法下各模型大幅上升(如 Qwen2.5-Coder-32B 三个名称均 100%)。
    • 名称长度与格式(Table VII):作者称长度、数字后缀、下划线格式对 THR 无一致影响;Qwen2.5-Coder-32B 在四种名称下均达 100%。
    • 跨领域包(Table V):awesome_numpy、awesome_request、awesome_django 下本文方法 THR 多超 70%,Qwen2.5-Coder-14B/32B 达 100%。

    防御评测与自适应攻击

    • 静态分析(Table IX):Cisco Skill Scanner、SkillRisk 对 5 个模型生成的 Skill 均未检出;SkillCheck(Repello AI)判为 low 风险。
    • LLM/智能体审计:Snyk Agent Red Teaming 全部检出;Cisco Scanner (LLM)、SkillCheck(Mondoo)、SkillProbe 均未检出;作者称 LLM 类方法表现不一致。
    • 沙箱动态分析:SandyClaw 对 5 个模型的 Skill 全部检出。
    • 自适应攻击(Section VIII-E,Qwen2.5-Coder-7B + awesome_request):把防御反馈纳入优化后,Snyk 不再标记,SandyClaw 从 malicious 降级为 suspicious 且运行结果变为 benign;THR 降至 65.52% 但仍有效。

    其他消融与分析

    • 显式程度(Figure 5):Level 0–2 保持高 THR,Level 3 中等下降,Level 4–5 为 0%。
    • Skill 长度(Table VIII):长度增加 THR 多下降,如 Llama-3.1-8B 从 78.57%(Short)降至 28.57%(Long);例外是 Phi-4-mini 在 Long 下为 63.64%(高于 Short 的 35.06%)。
    • 重复次数(Figure 6):N=5–50 下均值稳定,标准差不超过 6.5%。
    • 温度敏感性(Figure 7):0.0–1.0 间 THR 大体稳定,最大波动在 Qwen2.5-Coder-14B(80.65%–96.77%,差 16.12%)。
    • 收敛(Table X,Qwen2.5-Coder-7B、LLM_AT):第 1 轮 79.31%,第 5 轮 89.66%,第 20 轮 93.10%,第 50 轮无进一步提升。
  5. 有什么可以进一步探索的点?

    作者列出四条局限:限于开源模型、提示词分布代表性、只测依赖生成、未来专门防御或更稳健。

    作者指出的局限与后续方向

    • 因无法看到专有系统提示词和部署管线,实验主要针对开源编程 LLM 而非闭源商业智能体(Section IX-C)。
    • 所评测的提示词分布不能完全代表真实软件工程工作流(Section IX-C)。
    • 评测主要衡量依赖生成行为,而非恶意包安装后的完整端到端危害(Section IX-C)。
    • 作者称未来针对持久行为操纵专门设计的防御机制可能对其攻击框架提供更强的稳健性(Section IX-C)。

    实验覆盖范围

    • 被测模型为 5 个开源指令模型:Llama-3.1-8B-Instruct、Phi-4-mini-instruct、Qwen2.5-Coder-7B/14B/32B(Section V-A)。
    • 任务仅限 Python 代码生成;数据集为 LLM_AT、LLM_LY、SO_AT、SO_LY 四个,论文未报告各数据集条数(Section V-B、V-C)。
    • 防御评测覆盖 3 个静态分析工具、4 个 LLM/智能体审计工具、1 个沙箱动态分析工具,自适应攻击实验只在 Qwen2.5-Coder-7B 上进行(Section VIII)。
    • 主实验每个请求生成 1 个补全(N=1),稳定性实验重复 N=5/10/20/50 次(Section V-E、VII-C)。
    • 论文未报告代理 LLM(负责补丁生成、策略总结、评分)的具体模型身份,仅给出温度 0.7(Section V-E)。
  6. 总结一下论文的主要内容

    Dependency Steering:恶意 Skill 主动操纵依赖选择,THR 最高 100%,可迁移,多数现有审计工具难以检出。

    一篇攻击论文:把包幻觉从被动模型失败重新框定为可被主动诱导的供应链漏洞。

    • 问题:编程智能体日益参与依赖选择,已有工作只研究自然发生的包幻觉;作者研究攻击者能否通过持久 Skill 工件主动操纵依赖推荐。
    • 方法:Dependency Steering 攻击 + 语义保持优化框架——多目标评分器(目标包含、隐蔽、流畅,含显式否决机制)、Context-Patch 注入引擎(以合规指令风格的对抗后缀注入 Skill 锚点)、基于 RAG 的终身策略探索,改造自 AutoDAN-Turbo。
    • 主结果:在 5 个开源模型 × 4 个数据集上,本文方法 THR 普遍高于 Direct Injection 和 BO 基线;Qwen2.5-Coder-32B 在 LLM_AT 上达 100.00%,Llama-3.1-8B 为 78.57%,Phi-4-mini 为 35.06%(Table IV)。
    • 迁移性:作者称攻击可跨模型(Qwen2.5-Coder 系列跨模型 THR 多超 80%)、跨提示词(训练与测试 THR 相当)、跨领域(requests/numpy/django 间)迁移。
    • 防御评测:静态分析工具均未检出(SkillCheck 判 low);LLM 审计不一致(Snyk 检出,Cisco Scanner (LLM)、SkillCheck (Mondoo)、SkillProbe 未检出);沙箱 SandyClaw 全部检出,但防御感知优化后被降级为 suspicious,THR 仍有 65.52%。
    • 作者结论:持久指令工件构成尚未被充分研究的软件供应链攻击面,现有 Skill 审计工具覆盖不足,需要针对长期行为操纵的防御。
阅读原文arxiv.org