回滚版本输入可被解释为 shell 命令
原文依据:3 处手动工作流把 workflow_dispatch 的 version 输入直接嵌入多行 shell 命令,没有引号或独立环境变量。拥有触发权限的人若输入 shell 元字符,runner 可能执行附加命令,而不只是选择版本。
附加命令将在 GitHub runner 的权限下运行,可能读取作业可用的令牌、修改仓库或部署,并影响 Vercel 账户。
手动触发者提供的 `version` 被直接展开到 shell 命令中,没有引号或环境变量边界。若具有工作流触发权限的人提交包含 shell 元字符的值,runner 可能把它解释成附加语法,并以工作流权限执行额外命令。用户可要求将输入经环境变量传递、严格校验允许的版本格式,并收紧触发和令牌权限。
```yaml# Manual rollback workflowname: Rollbackon: workflow_dispatch: inputs: version: description: 'Version to rollback to' required: truejobs: rollback: runs-on: ubuntu-latest steps: - name: Rollback deployment run: | # Deploy the specified previous version npx vercel rollback ${{ inputs.version }}```查看另外 2 个位置
name: Rollbackon: workflow_dispatch: inputs: version: description: 'Version to rollback to' required: true steps: - name: Rollback deployment run: | # Deploy the specified previous version npx vercel rollback ${{ inputs.version }}```