审计GitHub Actions工作流中AI代理集成的安全漏洞,包括Claude Code Action、Gemini CLI、OpenAI Codex和GitHub AI Inference。检测攻击者控制的输入到达CI/CD管道中运行的AI代理的攻击向量。
技能概述
agentic-actions-auditor 技能是一个专门用于GitHub Actions工作流安全审计的技能,专注于检测AI编码代理集成中的安全漏洞。该技能提供静态安全分析指导,帮助发现工作流文件、识别AI操作步骤、跟踪跨文件引用、捕获安全相关配置,并检测攻击者控制的输入到达CI/CD管道中AI代理的攻击向量。
下载地址:https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/agentic-actions-auditor
主要功能
- 工作流发现: 本地或远程发现GitHub Actions工作流文件
- AI操作识别: 识别Claude Code Action、Gemini CLI、OpenAI Codex、GitHub AI Inference等AI代理
- 跨文件解析: 跟踪复合操作和可重用工作流中的隐藏AI代理
- 安全上下文捕获: 捕获触发事件、环境变量、权限配置等安全相关信息
- 攻击向量检测: 检测9种主要攻击向量,包括环境变量中介、直接表达式注入、CLI数据获取等
- 结构化报告: 生成可操作的安全发现报告,包含严重性评估和修复建议
触发条件
在以下情况下应该调用此技能:
- 审计仓库的GitHub Actions工作流中的AI代理安全
- 审查调用Claude Code Action、Gemini CLI或OpenAI Codex的CI/CD配置
- 检查攻击者控制的输入是否可以到达AI代理提示
- 评估代理操作配置(沙箱设置、工具权限、用户白名单)
- 评估暴露工作流到外部输入的触发事件
- 调查从GitHub事件上下文通过env块到AI提示字段的数据流
使用场景
场景1: 本地工作流审计
扫描本地仓库的.github/workflows/目录,识别所有AI代理集成并检测安全漏洞。
场景2: 远程仓库审计
通过GitHub API获取远程仓库的工作流文件,进行安全分析并生成报告。
场景3: CI/CD安全审查
在CI/CD管道中集成此技能,自动检测新添加的AI代理集成的安全问题。
处理过程
1. 确定分析模式
根据用户提供的是GitHub仓库URL还是本地路径,选择远程分析模式或本地分析模式。
2. 发现工作流文件
使用Glob定位所有GitHub Actions工作流文件(.github/workflows/*.yml和*.yaml)。
3. 识别AI操作步骤
检查每个工作流文件中的每个作业和步骤,识别已知的AI操作引用:
- anthropics/claude-code-action
- google-github-actions/run-gemini-cli
- openai/codex-action
- actions/ai-inference
4. 捕获安全上下文
为每个识别的AI操作步骤捕获安全相关信息:
- 步骤级配置: prompt、claude_args、allowed_non_write_users、sandbox等
- 工作流级上下文: 触发事件、环境变量、权限配置
5. 分析攻击向量
检查9种主要攻击向量:
- 向量A: 环境变量中介
- 向量B: 直接表达式注入
- 向量C: CLI数据获取
- 向量D: PR Target + Checkout
- 向量E: 错误日志注入
- 向量F: 子shell扩展
- 向量G: AI输出eval
- 向量H: 危险沙箱配置
- 向量I: 通配符白名单
6. 报告发现
生成结构化的发现报告,包含:
- 执行摘要
- 摘要表格
- 按工作流分组的详细发现
- 严重性评估
- 数据流跟踪
- 修复建议
输入要求
使用此技能时,用户需要提供:
- 本地仓库路径,或
- GitHub仓库URL或owner/repo标识符
- 可选: 特定分支、标签或SHA引用
输出说明
技能将提供:
- 分析的工作流数量和AI操作实例数量
- 安全发现总数及按严重性分类
- 每个发现的详细信息(标题、严重性、文件、步骤、影响、证据、数据流、修复)
- 跨文件引用解析结果
- 安全配置评估
使用示例
示例1: 审计本地仓库
请审计当前仓库的GitHub Actions工作流中的AI代理安全
示例2: 审计远程仓库
请审计 https://github.com/owner/repo 的AI代理集成安全
示例3: 审计特定分支
请审计 owner/repo@main 分支的工作流安全
最佳实践
- 定期审计: 在添加新的AI代理集成或修改工作流时进行安全审计
- 关注触发事件: 特别注意pull_request_target、issue_comment等外部触发事件
- 检查环境变量: 仔细检查env块中是否包含事件数据引用
- 验证沙箱配置: 确保沙箱配置安全,避免danger-full-access等危险模式
- 限制用户白名单: 避免使用通配符"*",使用明确的用户列表
- 审查工具权限: 限制AI代理可用的工具集,避免危险的子shell扩展
常见错误认知
错误1: "只对维护者的PR运行"
错误原因: 忽略了pull_request_target、issue_comment等触发事件会将操作暴露给外部输入。攻击者不需要写权限即可触发这些工作流。
错误2: "我们使用allowed_tools限制功能"
错误原因: 工具限制仍可能被武器化。即使受限的工具如echo也可能通过子shell扩展被滥用。
错误3: "提示中没有${{ }},所以安全"
错误原因: 这是经典的环境变量中介遗漏。数据通过env块流向提示字段,提示本身看起来很干净,但AI代理仍接收攻击者控制的输入。
错误4: "沙箱防止任何实际损害"
错误原因: 沙箱配置错误会完全禁用保护。即使正确配置的沙箱,如果AI代理可以读取环境变量或挂载文件,也会泄露秘密。
注意事项
- 仅用于分析使用AI代理操作的工作流
- 这是静态分析指导,不是运行时提示注入测试
- 不适用于非GitHub CI/CD系统(Jenkins、GitLab CI、CircleCI)
- 此技能报告发现,不自动修复或修改工作流文件
- 该技能具有安全风险等级,可以放心使用