AI Agent 沙箱配置安全审计实战:识别 Vector H 危险沙箱配置,阻断 CI Runner 上的任意代码执行

AI Agent 沙箱配置安全审计实战:识别 Vector H 危险沙箱配置,阻断 CI Runner 上的任意代码执行 AI Agent 沙箱配置安全审计实战识别 Vector H 危险沙箱配置阻断 CI Runner 上的任意代码执行【免费下载链接】anomalibAn anomaly detection library comprising state-of-the-art algorithms and features such as experiment management, hyper-parameter optimization, and edge inference.项目地址: https://gitcode.com/GitHub_Trending/an/anomalib本篇技术指南是 anomalib 仓库内置的agentic-actions-auditor技能中Vector HDangerous Sandbox Configurations参考文档的深度解读与实践扩充。它面向负责审查 GitHub Actions 工作流的开发者与安全工程师帮助你在调用 Claude Code Action、OpenAI Codex、Gemini CLI 等 AI 编码 Agent 的 CI/CD 流水线中识别沙箱/安全策略被完全关闭的配置级弱点理解它如何将一次 prompt 注入从文本影响升级为Runner 上的远程代码执行RCE并给出可落地的检测要点、漏洞模式与修复方案。读完本文你将能够独立审计任意工作流中的 AI Action 步骤定位Bash(*)、danger-full-access、--yolo等危险配置并正确区分真正的高危发现与误报。一、Vector H 的本质配置级弱点而非注入路径Vector H 描述的场景是AI Action 的沙箱或安全配置被设置为完全禁用保护的值从而赋予 AI Agent 无限制的 Shell 访问、文件系统访问或免审批执行能力。它与其他向量A–G有一个根本区别Vector A–G 解决的是攻击者输入能否到达 AI注入路径Vector H 解决的是注入一旦成功爆炸半径有多大配置弱点。正如 Vector H 参考文档 所强调的这类配置级弱点会放大任何 prompt 注入向量的影响——把攻击者可以影响 AI 文本输出转变为攻击者在 CI Runner 上实现任意代码执行。在 agentic-actions-auditor 技能主文档 中该技能明确定义了审计范围静态审查 GitHub Actions 工作流中调用 AI 编码 AgentClaude Code Action、Gemini CLI、OpenAI Codex、GitHub AI Inference的集成检测攻击者可控输入到达 CI/CD 流水线中 AI Agent 的攻击向量其中明确包含危险沙箱配置与通配符用户白名单。Vector H 正是这一技能中 9 个检测向量A–I的第八个。二、适用动作与风险面并非所有 AI Action 都具备可配置的沙箱。参考文档给出了精确的适用性判定Action适用性说明Claude Code Action是claude_args中的--allowedTools Bash(*)会禁用工具限制OpenAI Codex是sandbox: danger-full-access与safety-strategy: unsafe禁用保护Gemini CLI是settings JSON 中的sandbox: false以及--yolo/--approval-modeyolo禁用沙箱与审批GitHub AI Inference否纯推理 API无沙箱/工具配置没有可限制的 Shell 访问关键结论GitHub AI Inference 不适用 Vector H因为它是仅推理的 API 调用没有 Shell 访问可被配置关闭。这一分类在 action-profiles.md 中有更细的佐证——GitHub AI Inference 的默认安全姿态即为无 Shell 访问、无文件系统访问、无可配置沙箱。三、触发事件与数据流模型触发事件任何事件均可。Vector H 关注的是 Action 的配置而非触发条件——触发条件决定攻击者输入能否到达 AI本向量决定 prompt 注入成功后的爆炸半径。数据流Vector H 没有直接的数据流它是一个配置弱点。其危险性可用如下模型概括ANY prompt injection vector (A-F) succeeds sandbox/safety protections disabled (this vector) unrestricted code execution on the runner即没有危险配置时一次成功的 prompt 注入仍可能被工具限制和沙箱边界约束存在危险配置时AI Agent 对 Shell、文件系统、环境变量和网络拥有完全访问权。四、逐 Action 检测要点参考文档为三类适用 Action 提供了明确的找什么指引。这些检测点全部落在 AI Action 步骤的with:块中。4.1 Claude Code Actionanthropics/claude-code-actionwith.claude_args包含--allowedTools Bash(*)或--allowedTools Bash(*)——无限制 Shell 访问AI 可执行任意命令with.claude_args包含跨多个无限制类别的宽泛工具模式如Bash(npm:*) Bash(git:*) Bash(curl:*)with.settings指向外部 settings 文件——需标记人工复核该文件可能以工作流 YAML 中不可见的方式覆盖工具权限。4.2 OpenAI Codexopenai/codex-actionwith.sandbox: danger-full-access——禁用全部文件系统限制AI 可读写 Runner 上任意位置with.safety-strategy: unsafe——对所有操作禁用安全执行两者同时出现代表最大暴露无限制文件系统 无安全检查。4.3 Gemini CLIgoogle-github-actions/run-gemini-cli、google-gemini/gemini-cli-actionwith.settingsJSON 包含sandbox: false——完全禁用沙箱CLI 参数包含--yolo或--approval-modeyolo——对所有工具调用禁用审批提示AI 无需确认即执行命令with.settingsJSON 中包含无限制run_shell_command的宽泛coreTools列表与 Vector F 的具体工具分析相关。4.4 检索位置审计时聚焦 AI Action 步骤的with:块Claude解析with.claude_args字符串中的--allowedTools模式同时检查with.settings的外部配置文件路径Codex直接检查with.sandbox与with.safety-strategy字段值Gemini解析with.settingsJSON 字符串中的sandbox: false与审批模式设置检查所有 args 风格字段中的--yolo或--approval-modeyolo。这些字段名在技能主文档 SKILL.md 的Step 3a捕获步骤级安全上下文中均有对应记录是审计流程中必须捕获的安全相关输入字段。五、漏洞示例三个危险配置的完整模式参考文档给出了来自研究 Example 8 的三段真实漏洞模式 YAML完整复现如下# Claude Code Action -- unrestricted shell - uses: anthropics/claude-code-actionv1 with: claude_args: --allowedTools Bash(*) prompt: Review this issue and fix the code # OpenAI Codex -- unrestricted filesystem no safety - uses: openai/codex-actionv1 with: sandbox: danger-full-access safety-strategy: unsafe prompt: Fix the bug described in this issue # Gemini CLI -- sandbox disabled - uses: google-github-actions/run-gemini-cliv1 with: settings: | {sandbox: false} prompt: Analyze and fix this issue注意三者的共性危险配置全部隐藏在with:块中工作流 YAML 表面看起来只是调用了一次 AI Action但从安全视角看它们分别禁用了 Shell 限制、文件系统限制和沙箱边界任何一个 prompt 注入向量如 Vector B 直接表达式注入、Vector A 环境变量中介成功都会直接落入无保护执行。六、为什么重要无保护 AI Agent 的能力边界参考文档明确指出没有沙箱限制时AI Agent 可以在 Runner 上执行任意 Shell 命令读写 Runner 文件系统上的所有文件访问环境变量包括GITHUB_TOKEN与仓库 Secrets发起出站网络请求数据外泄修改仓库内容、创建 Release 或推送代码。结合技能主文档 SKILL.md 中要拒绝的合理化借口第四条——沙箱能防止任何实际损害——可以更深刻地理解这一点danger-full-access、Bash(*)、--yolo等错误配置会完全禁用保护即便沙箱配置正确只要 AI Agent 能读取环境变量或挂载文件仍可能泄露 Secrets。沙箱边界的安全强度只取决于它的配置。七、误报判定哪些配置是安全的审计最怕误报。参考文档给出了明确的 False Positives 清单逐条继承如下Claude 的具体受限工具模式--allowedTools Bash(npm test:*)或--allowedTools Bash(echo:*)——这些是限制性配置而非危险配置不过它们可能通过 Vector F 的子 Shell 展开被利用Codex 工作区级沙箱sandbox: workspace-write允许写入但局限于工作区边界并非完全系统访问Gemini 具体工具列表coreTools包含具体工具但不包含run_shell_command——属于工具级限制而非完全禁用沙箱默认配置未显式设置沙箱/安全配置字段的 Action——默认值通常是安全的Claude 默认限制工具Codex 默认sandbox: workspace-writeGemini 默认沙箱启用Claude 窄模式--allowedTools例如--allowedTools Read(*) Grep(*)——只读工具风险极小。7.1 误报判定的底层依据这些误报判定的正确性可以从 action-profiles.md 中每类 Action 的默认安全姿态得到交叉验证Action默认安全姿态节选Claude Code ActionBash 工具默认禁用必须通过--allowedTools显式放行show_full_output默认false防止日志泄密OpenAI Codex沙箱默认workspace-write工作区内读写、本地运行命令、无网络安全策略默认drop-sudo网络默认关闭.git、.agents/、.codex/为受保护路径Gemini CLIGitHub Action 默认沙箱关闭未设--sandbox标志启用沙箱时默认 profile 为permissive-open限制项目目录外写入默认审批模式要求工具调用确认--yolo会强制自动启用沙箱其中 Codex 的受保护路径.git、.agents/、.codex/目录即使在可写沙箱中也是只读的值得特别关注——这正是工作区可写但非全系统访问的落地机制。八、在审计流程中如何落地方法论串联Vector H 参考文档是技能方法论中的一个向量模块。要正确使用它需要把它放回 SKILL.md 的完整审计流程中Step 0/1确定本地或远程分析模式发现并读取工作流文件.github/workflows/*.yml/*.yamlStep 2识别 AI Action 步骤uses:值与anthropics/claude-code-action、openai/codex-action、google-github-actions/run-gemini-cli、google-gemini/gemini-cli-action、actions/ai-inference前缀匹配忽略后的版本Step 3捕获安全上下文——对 Vector H 而言重点是各 Action 的沙箱/工具配置字段Step 4按向量表逐一检测Vector H 的快速检查是danger-full-access、Bash(*)、--yolo、safety-strategy: unsafeStep 5生成结构化报告。8.1 严重度判断与放大机制技能主文档对 Vector H 的严重度判定有专门规定Vector H危险沙箱配置和 Vector I通配符用户白名单是配置弱点它们放大共存的注入向量A–G本身不是独立的注入路径。没有共存的注入向量时Vector H 或 I 单独出现只能评为 Info 或 Low——危险配置但无已证明的注入路径。具体判断因素包括触发事件暴露面面向外部的触发器pull_request_target、issue_comment、issues提升严重度沙箱与工具配置危险模式danger-full-access、Bash(*)、--yolo提升严重度限制性工具列表与安全默认值降低严重度数据流直接性直接注入Vector B比间接多跳路径Vector A/C/E评级更高权限与 Secrets 暴露过宽的github_token权限或广泛的 Secrets 可用性提升严重度。报告时配置弱点类发现需用影响放大说明替代数据流部分说明该配置弱点在存在共存注入向量时会使攻击者达成何种后果。当 Vector H 与注入向量共存于同一步骤时应在报告中注明配置弱点放大了注入发现的严重度。8.2 跨文件审计的补充AI Agent 也可能隐藏在 composite action 或可复用工作流中。参考 cross-file-resolution.md 的分类算法./path/to/action为本地 composite action读取其action.yml检查runs.using: composite后扫描runs.steps[]job 级uses:为可复用工作流按完整工作流分析解析深度固定为 1 层。在解析出的文件中找到 AI Action 后同样对其with:块执行 Vector H 检测——危险沙箱配置不会因为藏在被引用的文件里就变得安全。九、修复建议恢复最小权限的默认姿态针对三类 Actionaction-profiles.md 提供了与 Vector H 直接对应的修复模式Claude Code Action——限制 Shell 访问claude_args: --allowedTools Bash(npm test:*) Bash(git diff:*)移除Bash(*)改用具体工具模式在公开仓库保持show_full_output: false默认值防止日志泄密。OpenAI Codex——收紧沙箱与安全策略sandbox: workspace-write # default: workspace access only, no network safety-strategy: drop-sudo # default: removes sudo privileges分析型任务可进一步收紧为sandbox: read-only更严格可选safety-strategy: unprivileged-user以非特权用户运行。组织层面可使用requirements.toml阻止danger-full-access防止单个仓库削弱沙箱策略。Gemini CLI——启用沙箱并移除危险审批模式settings: {sandbox: true}或通过--sandbox标志启用从 CLI 参数中移除--yolo与--approval-modeyolo恢复要求工具调用确认的默认审批模式若确需 Shell 访问应使用基于容器的沙箱来限制爆炸半径而非仅依赖内置沙箱 profile。十、与其他向量的协同与延伸阅读Vector H 并非孤立存在。审计时建议联动以下参考文档形成完整判断Vector F受限工具列表中的子 Shell 展开——Bash(echo:*)等看似受限的工具模式可能通过echo $(env)绕过限制实现任意命令执行与 Vector H 同属工具/沙箱配置域Vector I通配符用户白名单——allowed_non_write_users: *、allow-users: *移除用户级门禁与 Vector H 一样是放大注入影响的配置弱点Shared Foundations攻击者可控输入模型——理解github.event.*表达式、env:块求值时机与三类数据流路径是判断注入是否可能成功的前提Action Security Profiles——每类 Action 的默认安全姿态、危险配置模式与修复方案的完整速查表。最终的审计结论应形成结构化报告先用执行摘要如 Analyzed X workflows containing Y AI action instances. Found Z findings: N High, M Medium, P Low, Q Info概括再按工作流分组、按严重度降序呈现每个发现包含标题、严重度、文件、步骤含行号、影响、证据 YAML、数据流或配置弱点的放大说明与修复建议。记住这条核心判定原则危险沙箱配置的价值不在于它本身而在于它让任何一条 prompt 注入向量都直达 Runner 上的无限制代码执行。【免费下载链接】anomalibAn anomaly detection library comprising state-of-the-art algorithms and features such as experiment management, hyper-parameter optimization, and edge inference.项目地址: https://gitcode.com/GitHub_Trending/an/anomalib创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考