Kim Lewandowski 是安全初创公司Chainguard的联合创始人兼产品负责人。在加入 Chainguard 之前,她曾在 Google 担任产品经理,最近的工作重点是保护公司的开发管道及其使用的开源工具。
在这次采访中,她讨论了安全软件供应链的概念,以及为什么这个想法在过去几年如此流行。她还解决了在尝试平衡开发人员生产力与审查开源组件的需求以及大型企业支持开源他们以安全和项目可持续性名义使用的开源工具的需求时所带来的挑战。
在 Google 工作期间,您参与了很多项目,但与本次讨论的目的更相关的项目之一是Tekton 。你能简单解释一下泰克顿吗?
Tekton 是一个开源项目。它是一个CI/CD框架和一个非常可插拔的系统,用于帮助开发人员使用从源到部署的管道。在创建 Tekton 时,我听到很多公司的很多客户询问安全性;这始终是所有相关人员的首要考虑。
然后是帮助保护 Google 免受开源安全威胁的机会。从做实际的 CI/CD 实现管道部分,然后通过安全镜头考虑这一点,这是一个非常自然的过程。不仅仅是漏洞,还有公司在开始更加依赖开源时所承担的一系列风险。
因此,基本上是安全软件供应链的想法。对于那些没有跟上讨论速度的人,你会如何定义它?
有些人听到这个词并认为它是关于物理供应链——制造、分销和事物——实际上是相似的。想一想我们的笔记本电脑等产品是如何生产的:有很多不同的步骤、阶段和部件要进入最终结果。例如,当您考虑软件供应链和像 Zoom 这样的软件(我们现在正在使用的)时,在这之下,有成百上千的开发人员贡献了最终产品的代码。然后它变得更加复杂,因为最终产品由许多其他依赖项组成。
还有其他类型的供应链攻击,例如开发人员冒充或项目接管。它比仅仅考虑代码中的漏洞或其他东西更全面一点。
当你开始审视整个画面时——软件如何从开发人员编写代码到最后——在该管道的每个环节和阶段都有弱点。所有的依赖关系,所有用于构建软件的东西,以及介于两者之间的所有部分,都是我们所说的软件供应链。
为什么现在成为话题?开发应用程序的方式以及构建和构建系统的方式发生了哪些变化,从而使人们关注构成其应用程序的各个部分?
我认为这有点像目前正在发生的流行病。发生了一件大事,每个人都争先恐后地关注它,稍微减少一点,然后发生其他事情,这是一个类似的故事。所以我不认为这个问题本身是新的,但在过去的几年里,我们已经看到了攻击的巨大增长。对于供应链攻击,我认为我看到的最新数字是2021 年增加了 650% 。
有很多不同的原因。我听说的一个原因是我们在保护技术中的其他事物方面做得更好,所以这是攻击者抓住的下一个最薄弱的环节。开源已经越来越多地被采用,它带来了不同风险向量的完整来源,我们还没有很好地保护这些风险向量。只是它的经济性——通过我们最近看到的一些攻击,比如Log4j 漏洞利用,攻击者获得了巨大的收益。
但这并不是一个新想法:总是被引用的一篇论文是 Ken Thompson于 1984 年发表的关于信任信任的思考,它解释了如何通过后门进入编译器,然后通过它做很多恶意的事情。
所有的依赖关系,所有用于构建软件的东西,以及介于两者之间的所有部分,都是我们所说的软件供应链。
开源在这一切中的作用是什么?你已经提到它是一种安全风险,但有一种说法认为开源更安全,因为你对它有更多的关注……
无论哪种方式都可以提出论点,但我认为现实——而且应该是这样——开源确实构成了我们今天的大多数软件应用程序。这样做的目的是让公司能够创新并加快他们正在尝试做的事情的生产。但随之而来的是风险。
当我们谈论开源安全风险时,有很多开源项目——其中许多是公司依赖的,或者开发人员会发现和使用,因为它做了它需要做的事情——没有得到很好的支持或很好的支持保持。这些事情背后并不总是有一家大型企业公司。有一个 xkcd 图像不断传播,所有这些现代基础设施和架构都被这个由内布拉斯加州的某个孤独的开发人员维护的小块所支撑。确实是这样的情况。
因此,尽管开源令人惊叹,它在技术和一切方面推动了我们的进一步发展,但它伴随着不受支持的项目的风险,不知道它们是如何维护的,它们遵循什么最佳实践,以及诸如此类的事情。
资料来源: xkcd
软件供应链对话到底有多少是关于容器的,以及现在非常流行的将应用程序和工具打包为容器的做法?
嗯,从我公司的角度来看,这就是我们关注的重点,因为这是我们目前最专业的领域。一般来说,容器开发正是人们移动的地方。不幸的是,我看到随着人们转向容器化应用程序开发,安全性被进一步推到了优先级列表的下方。如果我是开发人员,我就不是安全开发人员——我需要推出一个功能,我需要构建我的产品。如果有一些我需要的可以进行图像编辑或视频编辑的开源包,我可能会抓住它,而不是从头开始编写代码,甚至不会三思而后行。
除了仔细审查您要提取的容器映像之外,答案是什么?例如,如果您查看 Docker Hub,有报道称有相当一部分图像存在漏洞。你如何审查他们?
听听您对仔细审查的描述会很有趣,因为我认为它从那里开始。拉入这些包或容器的人正在对代码进行逐行分析,这不是现实。在 Docker Hub 中,甚至无法追溯源代码是从哪里放入容器中的。
回到物理供应链的类比,你必须能够将这些东西追溯到它们的起源,首先:是谁开发了它们?哪些工程师正在将代码放入其中?它是如何建造的?它包含哪些包和依赖项?了解这些管道以及相关信息的证据,将使您能够做出比现在更好的信任决策。
随着人们转向容器化应用程序开发,安全性已被进一步推到优先级列表的下方。如果我是开发人员,我就不是安全开发人员——我需要推出一个功能,我需要构建我的产品。
这听起来像是组织内标准化的一个案例,并确保不同的团队和不同的开发人员不会都在构建雪花或遵循不同的指导方针。
确切地。这就是我们今天看到大企业苦苦挣扎的地方,因为我们都知道SolarWinds 事件特别是攻击了构建系统。因此,现在公司正在更仔细地审视代码是如何构建的,甚至是在内部。这不仅仅是我们谈论的开源风险——内部风险是大公司需要担心的真实事情。
通常是狂野西部,因为公司不想妨碍他们的开发人员完成工作的方式。所以他们就像,“嘿,开发人员,去使用任何工具,去使用完成工作所需的任何构建系统。”但从安全的角度来看,这将成为一场噩梦。有一家与我交谈过的公司拥有大约 120 种不同的构建系统。想象一下,比如说,在 120 家不同的工厂生产一种你一无所知的药品。
个人或公司应该如何解决这个问题,一方面,我们说开发人员的生产力是第一工作,另一方面我们说安全是第一工作?
我认为首先是意识。即使在更高的执行级别上,仍然没有广泛了解存在的风险以及人们如何考虑这些事情。我不知道人们是否完全了解这里涉及的不同威胁模型,只是作为一个起点。我确实认为这里的答案是使用不同的技术制作对开发人员友好的工具,从而降低难度。 Chainguard 的使命是在默认情况下确保软件供应链安全,因为我们认为让开发人员采用更安全的实践和更安全的工具的唯一方法是确保您不会妨碍他们——让他们。
我刚接到一个关于我们正在开发的开源项目的电话,以便开发人员对 Git 提交进行加密签名,这根本不会妨碍他们。您可以使用您的凭据签署您的代码提交,然后人们可以在另一边进行验证,基本上。这是开发人员如何开始变得更加安全的一个例子,而不会有很多事情妨碍他们。
现在,这确实给开发人员带来了更多的责任,因为您必须登录并进行身份验证,但经济学表明,如果您更早地发现问题,那么您就不会为他们付出太多。
然而,我们一直在看待这个问题的方式是,它不仅向左移动,而且一直向右移动。您必须了解您在生产系统中运行的到底是什么,并能够追溯它。这是我们在 Log4j 事件的后果中看到的一件大事:许多公司根本不知道他们是否受到了影响。所以我认为我们确实需要两面的东西来帮助解决这个问题。
许多组织害怕更新,因为他们认为一切都会中断。这样做的缺点是他们让易受攻击的软件继续运行,当他们确实更新了许多版本时,这是一场噩梦。我们需要让组织更频繁地更新。从广义上讲,我认为所有这一切的关键是自动化部分——摆脱开发人员的障碍,左右移动以确保事情尽可能自动化。
左移
左移是在软件开发生命周期的早期执行测试、安全检查和其他过程的做法,以便及早发现它们并避免在后期阶段出现问题。
如果一切都如此复杂,为什么有这么多人致力于微服务或云原生开发或任何你想称之为的东西?没有理由回拨吗?
也许有人会提出这个论点,但我不会提出那个论点。就它为我们这个社会所做的事情以及现在从中产生的技术而言,我认为容器只是为我们提供了一种新的方式来推理这些问题并能够迎头赶上。而且我什至不知道它是否“赶上”了,因为老实说,我不确定在没有容器的情况下,与我们使用 VM 等工具相比,该工具有多好。
我们认为这个问题很容易解决,我猜,但这只是很多工作,尤其是当你开始谈论这些每个人都依赖的开源项目时。因为它们不受大企业的支持;大型企业可能会使用它们,但通常它们不会为项目做出贡献或提供任何形式的财务支持。
支持开源项目是一个很大的讨论话题,但除了更好的工具之外,还可以做些什么来提高安全性呢?
它超大。总的来说,我认为这是很多事情:我认为这是这些项目的资源。我认为大型企业只是更好地查看他们的库存,他们所依赖的东西,并希望在他们依赖其中一些项目的地方做出贡献。人们正在努力制作更多精心策划的开源项目,人们知道他们更加坚强。
我也确实认为政府层面围绕软件供应链进行了很多讨论,并围绕它引入了更多监管。因此,直接向政府销售的公司将被要求做一定数量的事情或满足一定的合规要求。然后它就变成了另一个问题,因为那些卖给政府的人依赖于他们自己的供应商,他们使用自己的开源代码。我认为,在接下来的 5 年或 10 年内,我们只会看到它一路涓涓细流。
[CISO] 对他们施加了巨大的压力,要求他们让事情变得更加安全,但他们很难在整个组织中一锤定音地说:“你必须开始以这种方式做事!”
这是否会产生加州排放标准类型的影响,如果您正在建造符合一个主要市场或买家的产品,每个人都会受益?
这是一个巨大的问题空间,我真的相信这些大公司齐心协力提升整个事态对每个人来说都是一件好事。因此,开源社区或大型开源项目(如 Kubernetes)的任何进展,我认为都是非常棒的,我只是希望我们在未来几年左右为这火上浇油。因为我确实认为这对这些公司中的许多公司来说不是战略优势,但它确实保护了它们并帮助提升了其他所有人。
在潜在客户中,你在和谁交谈,或者你在和什么级别的人交谈?
我们还很早——我们在 10 月推出并刚刚宣布了我们的第一个产品——但很多来找我们的人都来自受监管的行业。银行、医疗保健、受监管空间中的任何人——这对我们来说都是头等大事。我与 CISO 进行了对话,并试图弄清楚是什么让他们熬夜,并询问他们将如何解决软件供应链问题。他们害怕新规定吗?他们将如何满足?
但是,最终,您也必须将这些东西卖给开发人员,因为他们是最终使用它们的人。我认为这就是冠军的用武之地——能够向开发人员和安全团队演示和展示不同的功能,让他们了解这将如何在他们的真实生产环境中实际工作。这有点像三明治模型:这里的人有钱,下面的人负责工作。
我不知道我是否可以羡慕这些公司的 CISO 的工作。他们承受着巨大的压力,要让事情变得更安全,但他们很难对整个组织一锤定音,说:“你必须开始这样做!”这是如何在让事情更安全和不惹恼所有人之间找到平衡。
许多组织害怕更新,因为他们认为一切都会中断。这样做的缺点是他们让易受攻击的软件继续运行,当他们确实更新了许多版本时,这是一场噩梦。
在一个越来越关注软件供应链、零信任和这些更现代的方法的世界中,我们可能称之为安全、防火墙和防病毒程序等的“传统”方法的未来是什么?
在防火墙的情况下,我认为现实情况是我们并不是都在封闭的墙壁后面运行。在基础架构和 SaaS 方面,仍有大量迁移到云,这意味着您需要像零信任这样的框架来验证对数据、资源或用户级别的访问,而不仅仅是信任网络上的一切。
我们不要忘记,您仍将在所有这些防火墙环境中运行开源软件。今天可能很少有系统是完全隔离的并且不使用任何开源或第三方代码。如果这些组件中的任何一个易受攻击并被利用,则入侵者已经在您的网络中,并且呼叫来自房屋内部。
我唯一的希望是人们开始更加认真地对待这些东西,开始审视他们的系统——他们的风险所在——并开始采用最佳实践和正在下降的东西。因为我认为有很多好事正在发生,尤其是在开源社区中,可以为每个人的生活提供更多帮助。
为什么软件供应链需要更多安全性的帖子首先出现在Future上。