GitHub:两项安全升级保护GitHub Actions免受pwn request攻击
GitHub在一天之内发布了两项针对Actions的互补安全升级:actions/checkout@v7阻断来自fork PR的pwn request攻击,新的工作流执行保护功能允许管理员在整个组织范围内按行为者和事件类型配置允许列表。
本文由人工智能基于一手来源生成。
GitHub于2026年6月18日发布了两项相互补充的GitHub Actions安全升级。两者都针对同一个根本问题:来自不可信来源的代码在仓库特权环境中的不受控执行。
什么是pwn request,为何多年来一直是问题?
Pwn request是这样一种攻击:外部贡献者从fork发起pull request,而触发的工作流使用特权事件——最常见的是pull_request_target——使其可以访问主仓库的密钥。与在fork隔离上下文中运行的标准pull_request事件不同,pull_request_target在代码库上下文中执行,并可访问GitHub token和存储的密钥。一次这样的攻击可能危及整个组织的CI/CD管道。
actions/checkout@v7:操作级别的安全默认值
热门checkout操作的新版本将保护行为作为默认设置引入:在pull_request_target等特权事件中,该操作拒绝从fork PR获取代码,转而检出仓库的基础分支。这样无需任何手动配置即可消除最常见的pwn request攻击场景。对于因特定工作流需要原有行为的团队,提供了退出标志。旧版checkout操作的回移计划于2026年7月16日完成。
工作流执行保护:组织级别的保护
与此同时,GitHub将工作流执行保护引入公开预览——一种管理员机制,允许为整个GitHub组织按行为者和事件类型定义允许列表。与在工作流内单个步骤级别提供保护的checkout@v7不同,该功能在工作流开始执行之前就强制执行。管理员可以精确指定谁以及哪种事件类型能够触发工作流——外部贡献者、机器人和未知行为者可以被系统性地排除或有条件地允许,无需修改每个单独的工作流文件。
常见问题
- 什么是pwn request攻击,为何危险?
- Pwn request是一种攻击,恶意fork PR在仓库的特权上下文中执行代码——而非在fork的隔离环境中。攻击者由此获得对接受外部贡献的仓库的密钥和token访问权限。
- actions/checkout@v7具体改变了什么?
- Checkout@v7在pull_request_target等特权事件中自动拒绝从fork PR获取代码,从而消除最常见的pwn request攻击向量。对于需要旧行为的团队,可使用退出标志。