跳到正文
原文
论文追踪· arXiv:2607.02857· Jiangrong Wu, Huaijin Wang, Yihao Zhang, Yuhong Nan, Shuai Wang·本站收录 · 原文发表 精选关注度57

MOSAIC 框架利用 CLI 命令组合攻击编码 Agent,成功率 96.59%

MOSAIC: Knowledge-Guided CLI Command Composition Attack in LLM Coding Agents

论文速读

攻击

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

MOSAIC利用CLI安全知识库构建命令组合攻击,在良性开发任务下对5个真实代码智能体取得96.59%的端到端ASR。

威胁模型攻击者对受害者系统没有shell访问权限,不能修改智能体运行时,不能直接在工作区执行命令,也不能直接控制智能体决策;攻击者仅控制智能体在良性开发任务中合理处理的内容(如公开仓库、包元数据、Issue、PR、文档),目标是诱导智能体CLI命令轨迹组合出超出任务范围的安全敏感能力(如RCE、凭据泄露)。

问题
代码智能体通过共享操作系统状态调用多条CLI命令完成任务。单条看似良性的命令可通过生产者-消费者状态传递,在跨命令轨迹中组合出超出用户任务范围的安全敏感能力,形成被忽视的CLI命令组合风险(CCR)。
方法
MOSAIC从CVE、安全公告和PoC中提取命令-状态摘要并归类为13个家族;通过枚举依赖链与可行性检查,将有效状态转移组合为攻击路径;再利用LLM生成对齐的良性提示词、恶意资源及预期命令序列,并在黑盒执行中通过外部效应判定攻击。
实验与结果
在5个代码智能体和5个后端LLM的2,525次试验中,MOSAIC取得96.59%的端到端ASR,远高于两项指令层基线(最高2.18%);5类现有防御中,有3类ASR降幅为0.00个百分点,最强防御下仍有82.57%的攻击成功。
局限与可以继续做的
研究评估了101条基于证据的漏洞利用路径,未穷尽所有CLI组合策略;实验覆盖5个代码智能体与5个后端LLM;知识库构建阶段依赖人工对候选条目进行最终确认;防御分析仅覆盖了5个选定工具在单一智能体上的表现。
实验设置Claude Code、Codex CLI 等 · 101 CCR exploit paths、NVD 等 · End-to-End ASR、IVR 等
被测模型
Claude CodeCodex CLIGemini CLIGitHub Copilot CLITrae Agentgpt-5.1claude-haiku-4-5gemini-2.5-flashqwen3.7-plusdeepseek-v4-flashPromptGuard 2
基准
101 CCR exploit pathsNVDGHSAExploit-DBCISA KEVAIShellJackGeneral IPI
指标
End-to-End ASRIVRPost-IVR ASRASR drop
AI 导读和推荐理由中山大学、山东大学、北京大学与香港科技大学的研究者提出 MOSAIC,一个知识引导框架,把 CVE、安全公告与研究者 PoC 蒸馏为可复用的命令状态摘要,再组合成攻击路径并实例化为真实开发工作流,用于黑盒评估编码 Agent 的 CLI 命令组合风险(CCR)。在 Claude Code、Codex CLI、Gemini CLI、GitHub Copilot CLI 和 Trae Agent 五款编码 Agent、五种后端 LLM 共 2,525 次试验中,MOSAIC 在良性开发任务下达到 96.59% 的端到端攻击成功率,而匹配的指令层基线 AIShellJack 和通用间接提示注入分别只有 2.18% 和 0.79%。作者称结构化知识库是关键,相比纯 LLM 生成器把有效攻击生成提升超过 50%。

中山大学、山东大学、北京大学与香港科技大学的研究者提出 MOSAIC,一个知识引导框架,把 CVE、安全公告与研究者 PoC 蒸馏为可复用的命令状态摘要,再组合成攻击路径并实例化为真实开发工作流,用于黑盒评估编码 Agent 的 CLI 命令组合风险(CCR)。在 Claude Code、Codex CLI、Gemini CLI、GitHub Copilot CLI 和 Trae Agent 五款编码 Agent、五种后端 LLM 共 2,525 次试验中,MOSAIC 在良性开发任务下达到 96.59% 的端到端攻击成功率,而匹配的指令层基线 AIShellJack 和通用间接提示注入分别只有 2.18% 和 0.79%。作者称结构化知识库是关键,相比纯 LLM 生成器把有效攻击生成提升超过 50%。

推荐理由论文提出 CLI 命令组合风险,用 CVE 与 PoC 蒸馏知识库生成攻击链,在五款编码 Agent 上给出成功率并测试五类防御。

深度解读

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

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

    代码智能体中单条看似良性的CLI命令可通过共享OS状态组合出越权能力,现有防御难以察觉此风险。

    代码智能体在执行多条良性 CLI 命令时,可能通过共享操作系统状态隐蔽组合出超出用户任务范围的安全敏感能力(CLI 命令组合风险,CCR)。

    • 问题出现的场景与重要性:现代代码智能体(如 Claude Code、Codex CLI)直接在命令行环境运行,通过连续执行 git、npm、bash 等普通 CLI 命令完成开发任务。这些命令依循 Unix 设计哲学通过共享操作系统状态(环境变量、文件系统、配置、钩子等)传递数据,直接接触用户系统与软件生产环境。
    • 现有防御的盲区:现有智能体安全研究主要关注指令层的提示注入(如间接提示注入),防御手段(如输入过滤、指令层级、单步工具调用检查)普遍依赖局部性假设,即攻击信号会显露在单条恶意文本或单次动作中。
    • 核心观察:攻击信号可以隐藏在看似良性的命令之间的生产者-消费者状态关系中:一条命令写入配置或环境变量,后续命令读取该状态,最终产生凭据泄露或远程代码执行等能力,而单条命令孤立来看均在任务范围之内。
    • 论文提出的解决方案:作者提出了 MOSAIC 框架,从真实 CVE、安全公告和 PoC 中提炼经实践验证的命令-状态行为,系统化构建高保真、可靠的命令组合攻击实例,对黑盒代码智能体进行安全评估。
    • 威胁模型:
      • 攻击者目标:促使智能体的 CLI 命令轨迹组合出超出用户任务范围的安全敏感能力(如远程代码执行 RCE、凭据泄露、容器逃逸)。
      • 攻击者知识与能力:攻击者对受害者系统没有 shell 访问权限,不能修改智能体运行时,不能直接在工作区执行命令,也不能直接干预智能体内部决策。
      • 攻击通道:攻击者仅控制智能体在良性开发任务中合理处理的内容(如公开代码仓库、包元数据、Issue、PR、文档或扩展表面),这些内容在任务前或任务中(如 clone 或 install)进入本地状态。
      • 受害系统:由受害用户托管、使用普通 CLI 命令执行软件工程任务的真实代码智能体。
  2. 有哪些相关研究?

    现有工作聚焦于单步指令层提示注入与单命令扫描,未能覆盖依赖跨命令状态传递的组合风险。

    相关研究主要围绕智能体指令层攻击与防御、以及单命令或 Shell 工件扫描展开。

    智能体指令层攻击

    • 提示注入与对抗指令:包括对抗越狱(Zou 等,2023)、直接提示注入(Perez 和 Ribeiro,2022)以及间接提示注入(Greshake 等,2023;Liu 等,2023)。这类方法将恶意文本注入到网页、文件或工具输出中,试图劫持 LLM 决策。
    • Shell 智能体注入攻击:AIShellJack(Liu 等,2025)针对 Shell 编码编辑器,通过在代码库中放置对抗文本,诱导模型将其作为任务指导执行恶意指令(如搜索 API 密钥并外发)。

    智能体指令层防御

    • 输入过滤与结构化隔离:包括过滤提示词(PromptArmor,Shi 等,2025;LlamaFirewall,Chennabasappa 等,2025)、区分可信与不可信文本(StruQ,Chen 等,2025;Spotlighting,Hines 等,2024)。
    • 指令层级与安全对齐:包括强化特权指令优先级(Wallace 等,2024;Wu 等,2025)、通过安全偏好微调模型拒绝不安全请求(SecAlign,Chen 等,2025;Jatmo,Piet 等,2024)。
    • 动作级意图检查与权限控制:检查选定动作是否符合用户意图(Task Shield,Jia 等,2024;Contextual Agent Security,Tsai 等,2025),或对工具调用进行可编程权限控制(Progent,Shi 等,2025;CaMeL,Debenedetti 等,2025)。

    Shell 静态检测与滥用知识库

    • 单命令扫描工具:ShellCheck、GTFOBins 与 LOLBAS 关注可疑的 Shell 命令语法、已知提权二进制或离地攻击工件。作者指出这些工具仅检测单条命令中可见的恶意行为,无法捕获跨命令的状态传递。

    基线方法与基准

    • 对比基线:实验选取了针对 Shell 智能体的 AIShellJack,以及涵盖 5 种包装样式(Naive、Escape-Separation、Context-Ignoring、Fake-Completion、Important-Instructions)的通用间接提示注入(General IPI)作为基线方法。
    • 评测基准参考:指令层基线的包装样式参考了 AgentDojo、WainjectBench、Injecagent 等基准。

    与本文工作的区别

    • 关注层面正交:作者指出,上述工作均基于局部性假设,即攻击信号存在于单条输入文本或单次动作中;而 MOSAIC 关注由良性命令通过共享操作系统状态组合而成的状态传递与越权能力,属于智能体安全中正交的结构性盲区。
  3. 论文如何解决这个问题?

    MOSAIC从安全记录提炼命令-状态知识库,枚举并验证依赖链,生成逼真的黑盒测试实例。

    MOSAIC 整体采用知识引导的三阶段流水线,通过构建 CLI 安全知识库、生成命令组合攻击实例,以及在黑盒环境中进行运行时执行与风险验证。

    形式化定义与组合条件

    • 命令状态转移:设任务 p 的执行轨迹为命令序列 T = (c1, ..., cn),作用于共享本地状态空间 Σ。每条命令 ci 具有产生状态集合 Pi ⊆ Σ 和消费状态集合 Qi ⊆ Σ。
    • 状态依赖关系:若先前命令 ci 写入的状态被后续命令 cj 读取或执行,则构成状态依赖,定义为:

    c_i \rightsquigarrow c_j \iff i < j \land P_i \cap Q_j \neq \emptyset

    • CCR 成立条件:一条轨迹展现 CCR 须同时满足三个条件:L1(单命令局部良性,每条命令自身可见效果均在任务允许范围 Scope(p) 内)、L2(组合产生越权能力,整条轨迹产生了超出范围的安全敏感能力 κ ∉ Scope(p))、L3(仅因组合而涌现,无单一命令独立产生 κ,能力必须源于非空状态依赖链)。

    CLI 安全知识库构建

    • 多源数据采集与过滤:爬取 NVD、GHSA、Exploit-DB、CISA KEV 及安全研究博客共 30,180 条原始记录,去重后得 21,149 条;经 CLI 白名单与 CWE 黑名单静态过滤保留 5,583 条;再经 LLM 评估与人工复核,最终确认 454 条具备具体 PoC 的条目。
    • 命令-状态摘要提取:将每个条目抽取为结构化记录 r = (τr, ϕr, Pr, Qr, κr, Er),分别记录命令模板、触发条件、产生状态、消费状态、暴露能力及支撑证据。
    • 13 个命令-状态家族组织:将摘要聚类为 13 个家族,涵盖环境传播、特权助手调用、参数选项边界、路径与符号链接、终端转义渲染、Shell 包装解析、容器与宿主边界、包管理器生命周期、仓库元数据信任、调度与服务写入、chroot 路径限制、子模块与钩子行为、IFS 分词。

    命令组合实例生成与验证

    • 依赖链枚举:在知识库中匹配生产者与消费者角色,枚举长度满足 2 ≤ n ≤ Lmax(上限 Lmax = 4)的候选利用路径 Π = (r1, ..., rn)。
    • 基于证据的可行性检查:结合检索到的漏洞 PoC 和文档等证据 ZΠ,由 LLM 检查依赖链在语义和结构上的可行性,排除不切实际的路径。
    • 实例生成与静态校验:由 LLM 生成攻击实例 I = (q, R, C, m),包含良性用户提示词 q、攻击者控制的资源 R、预期命令序列模式 C 及预期外部效应 m。静态校验器检查模式完整性、证据锚定、状态依赖一致性、局部良性及资源一致性。

    运行时黑盒执行与判定

    • 黑盒执行与双重监控:为被测智能体提供干净工作区并注入资源 R,输入良性提示词 q。系统同时记录实际命令轨迹 T 及外部效应日志 E。
    • 组合神谕判定:神谕通过检查命令轨迹与外部效应共同判定攻击成功:

    Oracle(I, ρ) = TraceOK(T, I) ∧ EffectOK(E, m) 该公式既要求实际执行语义匹配预期的生产者-消费者步骤,又要求检测到预期的确定性外部标记(如文件创建或删除),避免语法匹配但未触发底层机制的误报。

  4. 论文做了哪些实验?

    MOSAIC在5个智能体上取得96.59%的ASR,现有5类防御均无法阻断该攻击。

    按实验设置、主结果、与其他攻击和防御对比以及消融分析展开。

    实验设置

    • 被测目标智能体:评估了 5 个真实 CLI 代码智能体,分别为 Claude Code、Codex CLI、Gemini CLI、GitHub Copilot CLI 以及 Trae Agent,均在默认配置下运行。
    • 被测后端模型:评估了 5 个后端 LLM,分别为 GPT-5.1、gemini-2.5-flash、claude-haiku-4-5、deepseek-v4-flash 以及 qwen3.7-plus。
    • 数据集与测试规模:基于知识库构建了 101 个 CCR 利用路径,其中路径长度为 2、3、4 的分别有 21、35、45 个;跨 5 个智能体和 5 个后端 LLM 共执行 2,525 次试验(101 × 5 × 5)。
    • 终末能力分类:101 个实例划分为 6 类终末能力,包括代码执行、容器/宿主逃逸、chroot/jail 逃逸、特权助手/通道访问、持久化、输出/渲染欺骗。
    • 基线方法:选取针对 Shell 智能体的 AIShellJack 以及包含 5 种攻击样式的通用间接提示注入(General IPI)作为指令层对比基线。
    • 评估指标与判定方式:采用端到端攻击成功率(End-to-End ASR)、实例有效率(IVR)及有效后 ASR(Post-IVR ASR)。判定采用确定性外部效应神谕,针对各类能力检查标志性文件或边界跨越。

    主结果

    在 2,525 次端到端测试中,MOSAIC 的整体攻击成功率如下表所示(据 Table I):

    表格较宽,可左右滑动

    目标代码智能体端到端 ASRn=2 (105)n=3 (175)n=4 (225)出处
    Claude Code488/505 (96.63%)99.05%97.14%95.11%Table I
    Codex CLI484/505 (95.84%)98.10%96.00%94.67%Table I
    Gemini CLI492/505 (97.43%)100.00%97.71%96.00%Table I
    GitHub Copilot486/505 (96.24%)99.05%96.57%94.67%Table I
    Trae Agent489/505 (96.83%)99.05%97.14%95.56%Table I
    总计2,439/2,525 (96.59%)99.05%96.91%95.20%Table I
    • 智能体普遍易受影响:作者指出所有被测智能体的端到端 ASR 均在 95.8% 以上,所有智能体均暴露了全部 101 条利用路径。在后端 LLM 维度,GPT-5.1、Haiku-4.5、Gemini-2.5 Flash、Qwen3.7+ 和 DS-V4 Flash 的端到端 ASR 分别为 95.84%、95.45%、96.63%、97.23% 和 97.82%(Table I),作者指出各模型表现高度一致。
    • 路径长度影响较小:随着利用路径长度从 2 增至 4,总体 ASR 从 99.05% 略微降至 95.20%,在最长路径下仍保持在 95% 以上。

    与指令层基线对比

    • 测试设置:在 Claude Code 智能体上对比 MOSAIC 与两类指令层基线(AIShellJack 与 General IPI),各运行 505 次试验(据 Table II)。
    • 实验结果:AIShellJack 在 505 次试验中成功 11 次,总体 ASR 为 2.18%(各模型为 GPT 1/101、Haiku 0/101、Gemini 1/101、Qwen 5/101、DS 4/101);General IPI 成功 4 次,总体 ASR 为 0.79%(各模型为 GPT 0/101、Haiku 0/101、Gemini 0/101、Qwen 3/101、DS 1/101);MOSAIC 成功 488 次,总体 ASR 达 96.63%(Table II)。
    • 作者解读:作者指出当前智能体已普遍能够识别并拒绝显式指令层攻击,但对通过跨命令状态依赖暴露能力的 CCR 缺乏防范。

    现有防御的防御边界分析

    • 测试设置:在 Claude Code 上部署 5 类代表性防御:PromptGuard 2(指令扫描)、Progent(能力控制)、CaMeL(信息流控制)、Semgrep(命令/资源扫描)、AlignmentCheck(任务对齐监控),各测试 505 个实例(据 Table V)。
    • 实验结果:PromptGuard 2、Progent 和 CaMeL 的 ASR 均为 488/505(96.63%),ASR 降幅均为 0.00 个百分点;Semgrep 使 ASR 降至 438/505(86.73%,降幅 9.90 个百分点);AlignmentCheck 使 ASR 降至 417/505(82.57%,降幅 14.06 个百分点)(Table V)。
    • 作者解读:作者指出前三类防御无法捕获跨命令的 OS 状态关系;静态扫描与对齐检查虽略微降低成功率,但在受测的最强防御下依然残留 82.57% 的成功率。

    其他消融与分析

    • 知识库消融(Table III):LLM-only 端到端 ASR 为 3/505 (0.59%),LLM + self-refine 为 5/505 (0.99%),LLM + raw RAG 为 92/505 (18.22%),完整 MOSAIC 为 488/505 (96.63%)。
    • 实例有效率 IVR(Table III):LLM-only 为 9/101 (8.91%),LLM + self-refine 为 17/101 (16.83%),LLM + raw RAG 为 47/101 (46.53%),完整 MOSAIC 为 101/101 (100.00%)。
    • 构造 LLM 变量(Table IV):GPT-5.1、Gemini-2.5 Flash、DS-V4 Flash、Haiku-4.5 生成实例的端到端 ASR 分别为 96.63%、96.24%、96.83%、96.04%。
    • 构造 LLM 有效率(Table IV):GPT-5.1、Gemini-2.5 Flash、DS-V4 Flash、Haiku-4.5 的 IVR 分别为 100.00%、99.01%、100.00%、99.01%。

    失败案例分析

    • 规划随机性导致偏差:作者手动检查了失败试验,发现大多数失败是因为智能体采用了替代的合法 CLI 组合路径完成了良性任务,且更常发生于长路径;当强制智能体进入预期的 CCR 路径时攻击仍能成功,证实失败反映的是智能体规划的随机性而非对风险的检测。
  5. 有什么可以进一步探索的点?

    作者指出需发展溯源感知防御,研究未穷尽所有CLI组合策略且依赖人工筛选。

    按作者指出的局限与后续方向、以及实际实验覆盖范围展开。

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

    • 未穷尽所有利用组合:作者在 Threats to Validity 中指出,本研究未提供详尽无遗的 CLI 组合目录,评估了 101 条基于证据的利用路径但未穷尽所有策略(Section IX)。
    • 探索溯源感知防御方向:作者在 Mitigation and Discussion 中提出,未来的防御方向应使 CLI 运行时具备溯源感知能力,记录每条命令写入或读取的状态,标记来自非可信资源的状态,并在后续命令消费时检查越权能力(Section IX)。
    • 运行环境最小权限化:作者在 Section IX 讨论指出,开发者可通过在临时、最小权限环境中运行智能体,并将继承的环境变量、配置、钩子和生命周期脚本视为非可信状态来减轻 CCR 暴露。
    • 平衡灵活性与状态推理:作者在 Section IX 提出,更广泛的目标是构建既保留 CLI 开发灵活性,又能显式推理跨命令状态传递的智能体运行时。

    实验覆盖范围

    • 目标智能体与后端模型:被测对象覆盖 5 个 CLI 代码智能体(Claude Code、Codex CLI、Gemini CLI、GitHub Copilot CLI、Trae Agent)与 5 个后端 LLM(GPT-5.1、gemini-2.5-flash、claude-haiku-4-5、deepseek-v4-flash、qwen3.7-plus)。
    • 测试实例与路径长度:生成并测试了 101 个基于证据的攻击实例,利用路径长度限于 2 至 4 条命令(分别为 21、35、45 个),最大长度设为 4。
    • 知识库构建的人工参与:在知识库候选过滤阶段,经 LLM 评分后依赖人工手动确认最终的 454 条条目;提炼的摘要也经过了人工复核。
    • 防御评估范围:防御实验仅在 Claude Code 单一智能体上评估了 5 个代表性工具(PromptGuard 2、Progent、CaMeL、Semgrep、AlignmentCheck)。
    • 未报告的指标:论文未报告各攻击实例在不同智能体上的执行耗时或 token 开销。
  6. 总结一下论文的主要内容

    论文提出针对代码智能体的CLI命令组合攻击MOSAIC,在5个智能体上取得96.59%的ASR。
    • 研究定位:该研究聚焦于 LLM 代码智能体中由多条良性 CLI 命令通过共享操作系统状态组合而成的安全风险(CCR)。
    • 核心问题:现有防御聚焦于指令层文本提示注入,忽略了 CLI 命令的执行基底;攻击者无需在文本中植入显式恶意指令,仅通过看似良性的跨命令生产者-消费者状态传递即可诱发越权。
    • 方法要点:提出了 MOSAIC 框架,从真实 CVE、公告和 PoC 中提炼结构化命令-状态知识库(划分 13 个家族),通过依赖链枚举与证据可行性检查,自动生成高保真攻击实例并在黑盒环境中进行确定性外部效应验证。
    • 主要实验结果:在 5 个真实代码智能体和 5 个后端 LLM 的 2,525 次试验中,MOSAIC 取得 96.59% 的总端到端 ASR(Table I),而指令层基线 AIShellJack 和 General IPI 的 ASR 分别仅为 2.18% 和 0.79%(Table II);结构化知识库使实例有效率从纯 LLM 的 8.91% 提升至 100.00%(Table III)。
    • 防御评估结果:在测试的 5 类代表性防御中,PromptGuard 2、Progent 和 CaMeL 的 ASR 降幅均为 0.00 个百分点,最强的 AlignmentCheck 下仍残留 82.57% 的 ASR(Table V)。
    • 作者结论与启示:作者认为当前代码智能体普遍容易受到命令组合风险的影响,单一动作或单条命令检测无法解决该问题;防御重心应从单个动作转向追踪命令轨迹间状态传递的溯源感知机制。
阅读原文arxiv.org