从工具到实践:如何在GitHub上确保开源项目安全?
发布时间:2023-05-29 10:51:04 所属栏目:安全 来源:
导读:Christine Peterson 1998年就创造出了“开源软件”一词。她解释道:“这是刻意为之,为了让其他人更容易理解这个领域”。同年,O’Reilly组织了首届“开源峰会”。
开源软件受
开源软件受
Christine Peterson 1998年就创造出了“开源软件”一词。她解释道:“这是刻意为之,为了让其他人更容易理解这个领域”。同年,O’Reilly组织了首届“开源峰会”。 开源软件受到更多人青睐的原因在于,用户对软件拥有更多的控制权因为他们可以检查代码。对于长期项目来说,开源软件被认为是稳定的,因为这些项目遵循开放的标准,即便维护者停止工作,也不会凭空消失。活跃的开发者社区十分重要。 比起闭源软件,开源需要更多地考虑安全问题,因为任何人都可以查看并修改代码。贡献者可以发现错误并提交一个PR对代码进行变更。与此同时,也伴随着一系列的安全问题。 什么是软件供应链攻击? 当有人利用外部供应商或能够访问你的企业的数据和系统的第三方组件来渗透你的数字基础设施时,就会发生软件供应链攻击。供应链攻击的类型多种多样,本文将聚焦于开源供应链。 任何人都可以通过开源举措为项目的开发作出贡献。利用这个切入点,黑客可以将漏洞编入开源项目中,当企业将该项目引入其软件中时也引入了新的威胁,而且往往是在不知情的情况下,通过编历依赖或间接依赖引入。 Web 应用安全的重要性 Web 应用安全是一个概念,它涵盖了一系列嵌入Web应用程序的安全管控,以保护其资产免受潜在的恶意行为的影响。它涉及安全开发实践,在整个软件开发生命周期(SDLC)中实施安全措施,以发现项目及其配置中的安全漏洞。 好消息是你可以通过使用不同的应用程序及 action 在 GitHub 内实现安全保护,不管是一个简单的demo项目,还是大型开源项目。基于此,开源项目可以拥有与闭源软件相同的安全水平。 Section 1:GitHub Marketplace 及 GitGuardian 应用 什么是 GitHub Marketplace? 2016年的GitHub Universe上,首次引入GitHub Marketplace。它是一个开发者可以找到集成插件并将其落实到工作流程中的地方。 如何利用安全工具创建基础流水线并实现防护? 你可以利用GitHub Marketplace中的安全应用和action来保护你的流水线每个开发阶段的安全。 一个基础的流水线包括: 作为软件安全系统的成分分析工具,应该专注于更好地识别代码库中的开放源码,以便维护者和贡献者能够更好地管理它们的安全和软件许可证合规问题 防止密钥泄露的工具 代码分析工具,它是一种在程序运行之前通过检查源代码进行调试的方法,一般根据一组编码规则分许一组代码 如何为你的项目选择相关应用?你需要考虑些什么? 选择工具、应用或是action 主要取决于你的项目或团队的工作流程。你们使用的是什么类型的技术栈?你们是部署到Docker还是使用K8S?在你们的流水线中有多少个步骤?你能在每个步骤都实施防护吗? 然后,你将会找到许多满足你需求的工具和应用。而对于开放源码软件的维护者来说,好消息是这些应用程序通常对公开的代码库或开源软件项目是免费的。 你可以在一个阶段中采用2个工具,比如 Synk 和 Mend 扫描你的依赖项。这两种工具在覆盖率方面都会有其优点和缺点,并会帮助你更好地了解你的项目的依赖项。如果你认为一个工具比另一个好,你仍然可以删除你不需要的那个。 让我们来看看OWASP Zap基线扫描这个GitHub action,它会扫描目标URL的漏洞,并在你提交PR时将其反馈给你的项目。 当你打算在项目中采用一个action或一个应用时,你应该在项目页上看到各种信息——GitHub是否验证该action?上图中显示为已验证,你可以在右侧看到一个蓝色的小勾。有多少贡献者在为这个项目工作?该项目获得了多少颗星?有多少issue和PR? 再导航到 GitHub 仓库,看看维护者和贡献者是如何积极推动这个项目的。它的文档是否完善?他们是否提供了基本的使用范例?(比如一个简单的YAML文件)是否容易实现?是否能与你项目的编程语言兼容? 接下来,我们来看看 GitGuardian 的实际用例。你可以直接在 Marketplace 中搜索到它。 点击产品页,你将获得更多信息。作为项目的维护者,你将会用 OWASP Action 检查我们前面提到的要求是否达标。我们可以看到 GitHub 是否验证了该应用、应用安装数量以及更多关于该组织的其他信息。 划到页面底部,你将看到价格及安装信息。GitGuardian为公开的代码库提供免费的监控。选择你想要安装的账号,并点击“Install it for free”。 你可以在所有代码库上都安装 GitGuardian 或者选择其中几个。你可以为需要安全防护的每个阶段重复这一过程。 Section 2:管理开源项目 当贡献者提交PR时,它将触发流水线中集成的所有应用和action。理想状况下,就GitGuardian而言,你希望凭证不被推送到源代码中,并且在贡献者提交PR之前停止这一行为。你可以在你的CLI上采用 GitGuardian Shield(ggsheild),并与预提交的 git hook集成以增强防护,确保凭证没有被推送到源码中。 如果没有设置 ggshield,在代码库上推送密钥的贡献者会在提交PR时收到告警。下图虚拟PR提交的过程中,你可以看到一些工具被触发。 你可以让其中一些工具在主干分支上是必须触发的。要做到这一点,需要进入项目设置,在【Code and automation】中点击【Branches】。在这里,你可以添加分支保护规则,要求在合并PR前必须通过状态检查。branches的作用是为了防止合并过程中出现意外情况,比如合并失败,或者合并失败后的数据丢失。 (编辑:聊城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐