攻击者从CI/CD下手,PyTorch专案存在软体供应链攻击风险

无人批准的分叉工作流程Lint / quick-checks / linux-job,却在pull_request时被自动触发,代表该流程使用预设批准配置。(图片来源/John Stawinski)

资安研究人员揭露一个

攻击者使用名为Gato的GitHub攻击工具,来辨识PyTorch储存库中的自托管执行器,Gato借由检查GitHub工作流程档案和运作日志,成功辨识出多个持续运作的自托管执行器,像是worker-rocm-amd-30(下图)。

图片来源_John Stawinski

接下来,资安人员分析PyTorch的拉取请求,发现过去贡献者提交过的拉取请求,能够触发pull_request工作流程,且无需额外批准。这代表储存库未对先前贡献者的分叉拉取请求设置工作流程批准要求。资安研究人员还在PyTorch工作流程档案中发现许多GitHub机密,包括存取金钥和GitHub个人存取权杖(PAT),而这些权杖在攻击者入侵供应链时非常有用。

另外,研究人员还进一步探讨自托管执行器的后期利用潜力,寻找从执行器撷取秘密资讯的策略。在分析PyTorch这个案例,研究人员不仅成功辨识出自托管执行器,还能够利用这些自托管器获取敏感资讯。

研究人员评估PyTorch团队处理自托管执行器安全性问题的表现,并指出PyTorch团队对安全问题的回应时间很长,且修复措施令人质疑,此外,这已经不是PyTorch首次遇到自托管执行器的安全挑战,之前也曾遭遇类似的攻击。

对于这类的安全漏洞,研究人员提到,安全有效的方法是更改GitHub预设配置,要求所有外部合作者的分叉拉取请求都要进行批准,对于需要使用自托管执行器的组织,应当使用隔离且一次性的执行器。不过这个问题也非PyTorch独有,组织在公开储存库中使用自托管执行器,都需要更加谨慎小心,采取更严格的安全措施。