agentic-actions-auditor:审计 GitHub Actions 里 AI Agent 集成的安全风险

前言

在 CI 里接入 Claude Code Action、OpenAI Codex、Gemini CLI 或 GitHub AI Inference 的做法越来越常见:用 Agent 自动审 PR、改代码、跑推理。这类步骤往往同时接触仓库权限、密钥和可被外部触发的 GitHub 事件上下文。若把攻击者可控输入直接或间接送进 Agent 的 prompt,或把沙箱、工具权限配得过宽,静态看 workflow YAML 很容易漏掉「环境变量中转」一类路径。

下面介绍 Trail of Bits 在 skills 市场里提供的 agentic-actions-auditor:一套面向 GitHub Actions 的静态审计指引,教 Agent 如何发现 workflow、识别 AI Action 步骤,并报告与 prompt 注入、沙箱配置相关的风险。它是分析指导,不是自动改文件的修复工具,也不做运行时 exploit 测试。

这是什么

agentic-actions-auditor 是 Claude Code / Codex 等环境里可加载的 Skill(SKILL.md 格式),归属 Trail of Bits Skills Marketplace,插件目录为 plugins/agentic-actions-auditor/。

官方描述概括为:对调用 AI 编码 Agent 的 GitHub Actions workflow 做静态安全分析,覆盖 Claude Code Action、Gemini CLI、OpenAI Codex、GitHub AI Inference 等集成;检测攻击者可控输入进入在 CI/CD 中运行的 AI Agent 的路径,包括环境变量中转、直接表达式注入、危险的沙箱配置、通配符用户白名单等。

Skill 声明允许使用的工具为:Read、Grep、Glob、Bash(Bash 仅用于通过 gh api 拉取远程仓库 workflow,且不得把拉取的 YAML 当作 shell 代码执行)。

核心功能

审计范围与识别对象

按官方「Known AI Action References」表,在每个 job 的 step(及需留意的 job 级 uses:)上,用 uses: 在 @ 之前的前缀匹配下列 Action(版本/ref 可忽略):

Action Reference 类型
anthropics/claude-code-action Claude Code Action
google-github-actions/run-gemini-cli Gemini CLI
google-gemini/gemini-cli-action Gemini CLI(legacy/archived)
openai/codex-action OpenAI Codex
actions/ai-inference GitHub AI Inference

除主 workflow 外,还会沿 uses: 跟进 composite action 与 reusable workflow,避免 AI 步骤藏在被引用文件里。

方法论要点

审计按步骤递进(资料中的 Audit Methodology):

  1. 分析模式:用户提供 GitHub 仓库 URL 或 owner/repo(可选 @ref)时走远程模式;否则在本地用 Glob 扫描仓库根目录 .github/workflows/*.yml 与 *.yaml(不扫子目录、vendor、测试 fixture)。
  2. 发现 workflow:统计文件数量;若无文件则停止并报告。
  3. 识别 AI Action 步骤:对照上表匹配 uses:。
  4. 采集安全相关配置:触发事件、env:、prompt 相关字段、沙箱与工具权限、用户 allowlist 等。
  5. 检测攻击向量:重点看 GitHub 事件上下文 → env: → Agent prompt 的数据流,以及直接 ${{ }} 注入、危险沙箱项等。

远程拉取 workflow 时,官方要求用 gh api 两步:先列目录,再按文件取 base64 解码内容;若指定 ref,每一次 API 调用都要带 ?ref={ref}。不要求事先 gh auth status,失败再提示认证或权限问题。

常见误判(审计时要反驳)

Skill 明确列出四类容易自我安慰的理由,审计时不应采纳,例如:

  • 仅维护者 PR 就安全 —— 忽略 pull_request_target、issue_comment 等外部可触发事件。
  • allowed_tools 已限制 —— 受限工具仍可能被滥用(如通过 subshell 泄露环境)。
  • prompt 里没有 ${{ }} —— 经典 env var intermediary:数据经 env: 进入 prompt,YAML 表面干净。
  • 沙箱够用 —— danger-full-access、Bash(*)、--yolo 等会关掉防护;配置不当仍可能读到密钥或挂载文件。

明确不做什么

  • 不含 AI Agent 的 workflow:应改用通用 Actions 安全工具。
  • 单独审 composite/reusable 且没有 caller workflow 上下文:不适用;应在引用它们的 workflow 里用本 Skill。
  • 非 GitHub CI(Jenkins、GitLab CI、CircleCI 等)。
  • 不自动修改 workflow,只报告发现。

安装与启用

Skill 随 trailofbits/skills 市场分发,安装市场后从插件菜单安装 agentic-actions-auditor 即可。

Claude Code:

/plugin marketplace add trailofbits/skills

然后通过 /plugin menu 浏览并安装对应插件。

Codex:

codex plugin marketplace add trailofbits/skills
codex plugin list
codex plugin add <plugin-name>@trailofbits

(将 <plugin-name> 换为市场中的插件名,agentic-actions-auditor 在 Code Auditing 分类下。)

本地开发时,在 skills 仓库的父目录执行:

/plugins marketplace add ./skills

ChatGPT Workspace 可通过仓库内 .claude-plugin/marketplace.json 导入;与 Cursor 专用的安装方式,以你当前环境文档为准,本 Skill 官方页未单独列出 Cursor 步骤。

Skill 本体路径:

https://github.com/trailofbits/skills/tree/main/plugins/agentic-actions-auditor/skills/agentic-actions-auditor

典型用法

在已启用该 Skill 的 Agent 对话中,按场景发起审计即可,例如:

  • 「审计本仓库 GitHub Actions 里 AI Agent 的安全配置。」
  • 「检查 owner/repo 的 workflow,外部输入能否到达 Claude/Codex 的 prompt。」
  • 「review CI/CD configurations that invoke Claude Code Action」——与官方 When to Use 表述一致。

本地模式:Agent 用 Glob 找 .github/workflows/ 下 YAML,Read 内容后按方法论出报告。

远程模式:提供 owner/repo、owner/repo@ref 或 https://github.com/owner/repo(及 tree/main/... 等形式)。Agent 用例如下命令拉取文件(示例为列目录):

gh api repos/{owner}/{repo}/contents/.github/workflows --paginate --jq '.[].name'

单文件内容:

gh api repos/{owner}/{repo}/contents/.github/workflows/{filename} --jq '.content | @base64d'

完成后应看到 workflow 数量、AI Action 实例与 findings 的汇总;无 workflow 时格式类似:「Analyzed 0 workflows, 0 AI action instances, 0 findings in owner/repo」。

适用场景与注意

适合:

  • 仓库或组织在 CI 中已使用或计划使用上述 AI Action。
  • 安全评审、开源贡献前自查:触发器是否暴露给 fork PR、issue 评论等;pull_request_target 与 base 分支上下文。
  • 评估沙箱、工具权限、allowed_users 等 agentic 配置,而非只看 prompt 字符串。

限制:

  • 静态分析指引,不能替代运行时 prompt 注入测试。
  • 远程分析依赖 gh 认证与对私有仓库的 token 权限。
  • 拉取的 YAML 仅作数据分析,Skill 禁止用 Bash 将其 pipe 到解释器或 eval。

结尾

agentic-actions-auditor 把「CI 里跑 Agent」从功能问题拉回到数据流与配置问题:谁能在什么事件下触发 workflow、外部输入如何进入 prompt、沙箱是否名存实亡。团队若在 pipeline 里落地 Claude、Codex、Gemini 或 GitHub AI Inference,可在代码评审流程里加上这一步静态审计。

官方 Skill 目录:

https://github.com/trailofbits/skills/tree/main/plugins/agentic-actions-auditor/skills/agentic-actions-auditor

市场总览与安装说明:

https://github.com/trailofbits/skills

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜