安全
Shai-Hulud蠕虫利用了GitHub Actions的配置错误来污染共享缓存,现在该项目正在考虑对未经请求的贡献采取核选项。
TanStack团队已经记录了安全措施和提案,遵循一个破坏性入侵 上周,包括仅通过邀请方式进行拉取请求(PR)的可能性——这打破了定义大多数开源项目的开放贡献模式。
攻击使用了来自沙虫(Shai-Hulud worm)的代码,发布由恶意软件团伙 TeamPCP 开发,能够从 GitHub Actions 使用的内存中提取秘密。它始于一个 PR,该 PR 通过 TanStack 对……的使用触发了自动工作流。 拉取请求目标(pull_request_target)功能导致恶意代码被GitHub Action构建并运行,从而污染了整个仓库中使用的缓存。
注册广告 (REG AD)
TanStack 团队表示 ,其工作流使用了 GitHub 警告不要使用的模式:pull_request_target 原本用于那些“不需要危险处理(例如构建或运行 PR 内容)”的 PR。
REG AD
自从攻击发生以来,TanStack(TanStack)已从其持续集成(CI)管道中移除了所有对pull_request_target的使用,禁用了pnpm(一个Node.js包管理器)和GitHub Actions使用的缓存,将操作固定到提交SHA(安全哈希算法)哈希而非可重定向标签, 并禁用了用于双因素认证的短信功能。
TanStack(TanStack)仓库现在也使用了pnpm 11的一个名为最低发布年龄(minimumReleaseAge)的特性。, 这要求依赖项在被安装之前必须已经发布了一段时间。其思路是,被破坏的包通常会在该时间段结束之前被检测并移除。
一个更激进的提议是关闭 外部贡献者打开拉取请求的能力。团队表示:“我们绝对不会闭源”,但可以设立一种机制,贡献从议题或讨论开始,只有受邀才能提交拉取请求。
TanStack 承认,这将是一个激进的举措,因为“开放的拉取请求正是我们许多人最初成为维护者的方式。”如果仓库能够强化到足以让恶意拉取请求无法造成破坏,这一措施或许并非必要。
其他开源项目的维护者将饶有兴趣地关注这场辩论。供应链安全是一个巨大的问题,但将拉取请求改为仅限邀请可能会因阻碍贡献而损害项目。
这方面的另一个问题是GitHub本身在多大程度上负有责任。TanStack团队表示:“GitHub Actions中的缓存作用域不应该静默地桥接fork PR和基础仓库分支。”®























