微信搜索同名网络研究观获取更多内容。
了解我们对 GitHub Actions 安全性的研究重点以及我们关于降低风险的建议。
我们最近发布了一份名为 《GitHub Actions 安全状况》的报告,该报告分析了 GitHub Actions 工作流和自定义 GitHub Actions 的安全状况。
该报告基于对 553,000 个组织和个人用户的 2,500,000 个 GitHub Actions 工作流文件的分析。
我们在 GitHub Actions 中发现了一些令人不安的安全问题,包括缺乏依赖固定或令牌权限限制。
在这篇博文中,我们分享了我们的研究重点,以及关于减轻 GitHub Actions 使用风险的建议。
避免 GitHub Actions 工作流程中的漏洞
Legit 研究团队在 GitHub Actions 工作流中发现大量以下漏洞:
👉插入不受信任的输入
👉执行不受信任的代码
👉使用不可信的工件
通过以下方式避免这些漏洞:
👉确保不要在工作流程中插入不受信任的数据。必要时,使用环境变量处理用户数据。
👉不在特权工作流中执行来自分支(或任何其他外部源)的代码。
👉避免来自不同工作流程的工件;如果必须,请将它们视为可疑的,并且不要相信它们包含的任何输入。
👉不使用不受信任的输入来设置环境变量。利用此输入,攻击者可以配置可导致管道接管的环境变量。
👉审核您正在使用的第三方操作并验证它们是否遵守安全最佳实践。
避免自定义操作的风险
我们的研究发现 GitHub Actions 市场的安全状况尤其令人担忧。
那里的大多数 Action 都未经验证,由一名开发人员维护,并且根据 OpenSSF Scorecard 的安全评分较低。
自定义操作虽然有用,但对工作流作者来说却存在很大风险。为了限制风险,请在使用时遵守严格的标准。
确保从经过验证的所有者以及活跃、维护良好且安全评分较高的所有者处导入操作。
避免 GitHub Actions 工作流程构建模块中的风险
安全地使用触发器
有些触发器天生就比其他触发器具有更大的风险,例如 pull_request_target 和 workflow_run。我们发现这两个触发器都出现了数千次。
尽可能避免使用危险触发器,例如workflow_run和pull_request_target。如果无法避免,请使用以下缓解策略:
👉不要自动运行工作流程。
👉执行前需要维护人员的批准(使用标签或环境)。
👉将工作流令牌权限设置为最低限度。
👉不要相信来自原始工作流的任何输入;将任何数据视为潜在的恶意数据。
安全地使用作业和步骤
我们的研究发现,98.4% 的作业和步骤使用的引用没有遵循依赖固定的最佳实践,该实践指定了 Action 可以依赖哪个包或库。
GitHub Actions 中的依赖项固定(以及一般情况下)对于确保工作流程稳定且可重现至关重要。
通过固定依赖项,您可以指定Actions 所依赖的外部包或库的确切版本。这种做法可防止意外更改或更新,这些更改或更新可能会引入重大更改、兼容性问题或安全漏洞。
安全地使用跑步者
有两种使用跑步者的方法:
👉托管运行器:GitHub 拥有的虚拟机,任何人都可以立即使用。
👉托管运行器:用户部署的自托管运行器,以满足安全性、性能或内存等个性化需求。
自托管运行器存在重大的安全风险,尤其是在其上运行不受信任的工作流程时。
我们建议仅使用具有私有存储库的自托管运行器。公共存储库的分支可能会通过创建在工作流程中执行代码的拉取请求,在自托管运行器机器上运行危险代码。
另一方面,GitHub 托管的运行器是干净、隔离的虚拟机,它们在作业执行结束时会被销毁,不会带来相同的风险。
安全地使用工作流权限
每个工作流程运行都会分配一个 GitHub 个人访问令牌,该令牌的作用域为当前存储库,使其能够与 GitHub API 进行通信。默认情况下,此令牌具有很高的特权。
我们的研究表明,只有 14% 的工作流程限制令牌权限。
如果没有这些限制,令牌可能会被用于执行恶意操作或接管存储库。
因此,工作流作者使用“权限”键来指定其工作流所需的范围非常重要。
关于安全使用 GitHub Actions 的总体建议
公司因使用不安全的 GitHub Actions 而面临的风险非常大。GitHub Actions 是公司最关键基础设施的关键。
它们既与组织的源代码相连,也与组织的部署环境相连,这意味着一旦被攻击者利用,组织就完全掌握在攻击者手中。
意识和培训
组织应优先教育其开发和运营团队了解与 GitHub Actions 相关的安全风险。
本教育包括:• 正确处理机密• 代码注入的风险• 使用第三方操作的最佳实践
培训课程应涵盖常见漏洞的识别和修复,重点强调安全第一的编码实践和定期审核工作流程以检测任何未经授权的更改。
此外,应实施持续的教育计划,让所有团队成员了解最新的安全威胁和缓解技术。
组织范围内的最佳实践实施
实施组织范围内的最佳实践配置执行对于维护 GitHub Actions 工作流程的安全性至关重要。
组织应使用 GitHub 的内置功能来控制 GitHub Actions 行为,以执行最佳实践和组织政策。
这些政策包括:
👉创建允许的第三方操作列表。
👉将工作流令牌的默认权限配置为最低权限。
👉控制哪些用户可以在组织中执行工作流程。
👉控制哪些存储库可以使用自托管运行器。
👉在组织内制定分叉政策。
👉确定应允许 GitHub Actions 在哪里批准拉取请求。
工具
组织应该利用与 GitHub 无缝集成的安全工具来持续扫描 GitHub Actions 漏洞、错误配置、易受攻击的依赖项、秘密检测等。
配置这些工具以自动扫描每个代码或配置更改的代码,确保立即反馈潜在的安全问题。