已关闭
【安全】【漏洞挖掘】pre-commit 工作流在特权上下文检出并执行不可信 PR 代码,可窃取 ROBOT_TOKEN(pwn request) #14
liudongfang创建于 14 天前关闭于 5 天前
Lliudongfang
11 天前 修改标题为 “【安全】【漏洞挖掘】pre-commit 工作流在特权上下文检出并执行不可信 PR 代码,可窃取 ROBOT_TOKEN(pwn request)”,原标题为“【安全】【CI 供应链】pre-commit 工作流在特权上下文检出并执行不可信 PR 代码,可窃取 ROBOT_TOKEN(pwn request)”
11 天前 修改标题为 “【安全】【漏洞挖掘】pre-commit 工作流在特权上下文检出并执行不可信 PR 代码,可窃取 ROBOT_TOKEN(pwn request)”,原标题为“【安全】【CI 供应链】pre-commit 工作流在特权上下文检出并执行不可信 PR 代码,可窃取 ROBOT_TOKEN(pwn request)”
5 天前 关联了pull request:openLiBing代码仓代码度量扫描插件版本升级至v1.0.3
5 天前 关闭了 issue
问题
pre-commit 工作流以特权上下文触发并执行不可信 PR 代码(pwn request):
.gitcode/workflows/pre-commit.yml:8pull_request_target与:11pull_request_comment(评论/pre-commit即触发,未校验评论者角色)触发的工作流可访问仓库 secrets:44-49Checkout 以token: ${{ secrets.ROBOT_TOKEN }}检出 PR 的 merge_commit_sha/head.sha,且allow-unsafe-pr-checkout: true显式关闭了 fork PR 检出拦截:59-63npm install在 PR 检出目录执行不可信 package.json 生命周期脚本:79openlibing/pre-commit-action@v1.0.2执行 PR 检出内容中的.pre-commit-config.yaml钩子self-hosted, region=overseas),工作流具备pr: write攻击路径:任意外部用户 fork 仓库 → 在 package.json postinstall 或
.pre-commit-config.yamllocal hook 写入任意代码 → 提交 PR 或评论/pre-commit→ 在持有 ROBOT_TOKEN 的 runner 上执行任意命令并窃取令牌。影响
CI/CD 供应链 RCE(CWE-829)。高危:凭据窃取(ROBOT_TOKEN)、以机器人身份篡改 PR 标签与仓库、自托管 runner 持久化污染并波及同 runner 其他任务。
建议修法
pull_request触发的无 secrets 隔离工作流;标签操作与代码检查分离信任域allow-unsafe-pr-checkout: true;确需特权触发时 ref 固定为可信 base SHAnpm install添加--ignore-scripts对应漏洞编号 argus-prsyncaction-20261010144054-002,报告见 reports/ 目录。