审计GitHub Actions工作流中的AI代理集成安全漏洞,包括Claude Code Action、Gemini CLI、OpenAI Codex和GitHub AI Inference。检测攻击者控制的输入到达CI/CD管道中运行的AI代理的攻击向量。技能概述agentic-actions-auditor 技能是一个专门用于静态安全分析的技能,用于审计调用AI编码代理的GitHub Actions工作流。它教授如何发现本地或远程GitHub仓库中的工作流文件,识别AI操作步骤,跟踪跨文件引用到可能包含隐藏AI代理的复合操作和可重用工作流,捕获安全相关配置,并检测攻击者控制的输入到达CI/CD管道中运行的AI代理的攻击向量。下载地址:https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/agentic-actions-auditor主要功能工作流发现: 在本地或远程GitHub仓库中发现GitHub Actions工作流文件AI操作识别: 识别工作流中的AI操作步骤(Claude Code Action、Gemini CLI、OpenAI Codex等)跨文件解析: 跟踪复合操作和可重用工作流中的隐藏AI代理安全配置捕获: 捕获安全相关的配置信息攻击向量检测: 检测攻击者控制的输入到达AI代理的攻击路径触发条件在以下情况下应该调用此技能:审计仓库的GitHub Actions工作流的AI代理安全性审查调用Claude Code Action、Gemini CLI或OpenAI Codex的CI/CD配置检查攻击者控制的输入是否可以到达AI代理提示评估代理操作配置(沙箱设置、工具权限、用户白名单)评估将工作流暴露给外部输入的触发事件(pull_request_target、issue_comment等)调查从GitHub事件上下文通过env:块到AI提示字段的数据流不适用场景分析不使用任何AI代理操作的工作流(使用通用Actions安全工具)在调用者工作流上下文之外审查独立的复合操作或可重用工作流执行运行时提示注入测试(这是静态分析指导,不是利用)审计非GitHub CI/CD系统(Jenkins、GitLab CI、CircleCI)自动修复或修改工作流文件(此技能报告发现,不修改文件)已知AI操作引用操作引用操作类型anthropics/claude-code-actionClaude Code Actiongoogle-github-actions/run-gemini-cliGemini CLIgoogle-gemini/gemini-cli-actionGemini CLI (legacy/archived)openai/codex-actionOpenAI Codexactions/ai-inferenceGitHub AI Inference审计方法论步骤0: 确定分析模式如果用户提供GitHub仓库URL或owner/repo标识符,使用远程分析模式。否则,使用本地分析模式。步骤1: 发现工作流文件使用Glob定位仓库中的所有GitHub Actions工作流文件:搜索 .github/workflows/*.yml搜索 .github/workflows/*.yaml如果未找到工作流文件,报告未找到工作流文件并停止审计读取每个发现的工作流文件步骤2: 识别AI操作步骤对于每个工作流文件,检查每个作业和每个步骤。检查每个步骤的uses:字段是否匹配已知的AI操作引用。步骤3: 捕获安全上下文对于每个识别的AI操作步骤,捕获以下安全相关信息:步骤级配置(来自with:块)触发事件分析环境变量流权限和访问控制步骤4: 检测攻击向量分析数据流,检测攻击者控制的输入是否可以到达AI代理。应拒绝的合理化借口1. 它只在维护者的PR上运行错误,因为它忽略了pull_request_target、issue_comment和其他将操作暴露给外部输入的触发事件。攻击者不需要写权限来触发这些工作流。2. 我们使用allowed_tools限制它可以做什么错误,因为工具限制仍然可以被武器化。即使受限制的工具如echo也可以通过子shell扩展(echo $(env))被滥用于数据泄露。3. 提示中没有${{}},所以它是安全的错误,因为这是经典的env var中介遗漏。数据通过env:块流到提示字段,提示本身中没有可见的表达式。4. 沙箱防止任何真正的损害错误,因为沙箱配置错误(danger-full-access、Bash(*)、--yolo)完全禁用保护。安全相关配置字段Claude Code Actionprompt: 发送到AI代理的指令claude_args: 传递给Claude的CLI参数allowed_non_write_users: 哪些用户可以触发操作allowed_bots: 哪些机器人可以触发操作settings: Claude设置文件路径trigger_phrase: 在评论中激活操作的自定义短语Gemini CLIprompt: 发送到AI代理的指令settings: 配置CLI行为的JSON字符串gemini_model: 调用的模型extensions: 启用的扩展OpenAI Codexprompt: 发送到AI代理的指令prompt-file: 包含提示的文件路径sandbox: 沙箱模式safety-strategy: 安全执行级别allow-users: 哪些用户可以触发操作allow-bots: 哪些机器人可以触发操作最佳实践全面扫描: 扫描.github/workflows/目录中的所有YAML文件跨文件跟踪: 跟踪复合操作和可重用工作流中的引用数据流分析: 分析从触发事件到AI提示的数据流配置验证: 验证沙箱、权限和白名单配置证据记录: 记录所有发现和攻击向量Bash安全规则Bash仅用于:gh api调用以获取工作流文件列表和内容gh auth status在诊断身份验证失败时永远不要使用Bash:将获取的YAML内容管道到bash、sh、eval或source将获取的内容管道到python、node、ruby或任何解释器在shell命令替换$(...)或反引号中使用获取的内容将获取的内容写入文件然后执行该文件注意事项仅在任务明确匹配上述范围时使用此技能不要将输出作为环境特定验证、测试或专家审查的替代品如果缺少所需的输入、权限、安全边界或成功标准,请停止并请求澄清