数据安全思考:数据安全取决于安全的软件开发供应链

数据安全思考:数据安全取决于安全的软件开发供应链_第1张图片

黑客利用 SolarWinds 漏洞大面积攻击政府和私人网络的事件已经发生了几个月,虽然这次攻击事件的广泛影响早已引起了重视,但一直缺乏关于实施的攻击类型的讨论。

最近,谷歌软件工程师 Dan Lorenc 在一篇文章中详细地描述了此类攻击的性质,并提出了一些关于供应链安全的最佳实践。

此外,Dan Lorenc 还就开源社区是否能够提供一些指导,使用更好的安全方法来开发具有安全优先思想的软件问题进行了深入探讨。

Dan Lorenc 是谷歌的一名软件工程师,专注于开源云技术。他领导的一个工程团队致力于简化为 Kubernetes 构建和交付系统的过程。他创建了 Minikube、Skaffold 和 Tekton 开源项目,并且是持续交付基金会技术监督委员会的成员。

什么是供应链黑客?

打个比方,让我们看看发生在 20 世纪 80 年代的芝加哥泰诺谋杀案。起因是有人闯入了芝加哥的一家药店,打开了含有氰化物的泰诺药瓶,把药瓶放回了货架。结果,服用这些含有毒品的泰诺药片的人病得很重,导致多人死亡。这个概念类似于供应链攻击(软件或基础设施)),即黑客通过一个小的后门闯入软件被使用的地方,或者潜入恶意代码,这些恶意代码将接管计算机,或者对软件的最终使用者造成任何形式的损害。在 SolarWinds 黑客案例中,攻击者攻击了军方和政府承包商使用最多的特定供应商域服务器。

对用于交付软件(或软件本身)的基础设施进行小规模隐形攻击的后果可能会产生很大影响。这是隐秘的,因为很难追踪供应链左侧到底出了什么问题。

其实,供应链攻击并不新鲜,早在 1984 年 Ken Thompson 的著名论文《Reflections On Trusting Trust》中,就讨论过这种攻击。

在当今世界,开源软件普遍存在,供应链攻击更具破坏性,因为有成千上万的“成分”由多方贡献。这意味着在考虑任何包的完整依赖关系树时,有更多的点可供某人进入并攻击。这并不是说开源应该为这个和其他的供应链攻击负责。事实上,如今在私有或封闭源代码基础设施上有太多的开源组件,整个开源与封闭源代码之间的辩论都是毫无意义的。关键的挑战是,我们如何才能确保当今这个主要由开源和闭源混合体构成的生态系统的安全。

要克服的主要障碍是与文化有关的。也就是说,开源开发的本质是建立在信任和透明的基础上的ーー开发人员实际上是将源代码免费提供给每个人。以 Libtiff 为例,它是 33 年前创建的一个组件,用于呈现特定类型的图像。今天,它被索尼 PSP、 Chrome 浏览器、 Windows、 Linux 和其他许多公司所使用。创造者从来没有想到它会在生态系统中得到如此广泛的应用。如果恶意代码被引入到这个根组件中,将带来难以想象的广泛破坏。

如何防止供应链黑客带来的威胁?

那么,考虑到当今普遍存在的文化背景和开源方法,我们都采取了哪些实际步骤来限制未来供应链黑客的危险?

首先,开发人员需要开始注入基础设施,以保护正在使用的软件开发管道。制定一些协议,帮助生态系统理解组件是如何制造的,以及它们将用于什么目的。同样,也不要在计算机上运行来自互联网的开源软件包。不幸的是,每个开发者每天都要做 100 次这样的事情。

其次,将所有这些信息传达给用户和消费者,以便他们能够做出有根据的决策。我们需要更好的证明软件过程的透明性,不仅是在开放源代码中,而且是在从开放到关闭等等的整个管道中。回到泰诺的比喻,由于那个可怕的事件,瓶子上的防篡改封条被创造出来。同样,软件供应链也开始识别需要修复的关键部分,以保护其免受攻击。

其中之一是通过软件物料清单传达组件或成分。这是关于建立基础架构,以允许在整个供应链中进行信息交流。有许多项目试图做到这一点,包括 intoto、Grafeas、SPDX 和 3T SBOM。他们都试图将验证向左移,将透明度向右移。回到这个比喻,如果有人能够看清 Tylenol 瓶上的 FDA 批准封条,他们知道他们可以食用它,并且在生产过程中要进行大量的制衡工作以确保其安全。我们在软件供应链中需要这种类型的软件原语,以便我们可以更好地与软件的上游使用者进行沟通。

我们不要忽视懒惰的因素。开发者知道他们应该使用加密技术,在使用之前签名和检查签名,但是这不方便,而且没有被认真对待。软件构建和 CI/CD 过程通常是最容易被忽视的; 它通常是一台放在某人桌子下面的机器,被设置了一次之后就再也没有看过。不幸的是,这正是我们真正需要强制执行和保护的安全要点。

如 Linux Foundation 2020 FOSS贡献者调查所示。在一个多方参与的协作式开放源码开发生态系统中,生产者(开发者)没有动力去交流软件组件,因为妥协发生在供应链的其他地方。例如,SolarWinds 没有受到攻击的影响,但是他们的用户受到了影响。作为链条一部分的每一个人都需要认识到,对组件进行表面识别在每个级别上都是至关重要的。

我们需要一个加密的纸质记录,该记录可提供经过加密签名的可验证信息,从而提供有关如何遵循该实践的见解。Linux 基金会最近发布了一篇博客文章,其中引用了一些建议,以防止像 SolarWinds 这样的供应链攻击。生态系统需要确保每件事都严格遵守,供应链中的每一个行为都是正确的,每一个软件产品都是由正确的人创造的,由正确的人消费,并且在过程中没有篡改或黑客行为。通过强调通过软件供应链进行核查,由此产生的透明度将使坏人的黑客行为更难被发现,从而限制了对软件消费者的下游影响和损害。这种供应链的审计线索还使得在攻击发生时更容易进行侦察。


如今,繁琐的开源安全性工作使许多人感到痛苦,但是开源管理器但是开源经理、安全专家和开发人员有机会成为意想不到的英雄,与那些试图危害我们系统的人作斗争。

由于开发的软件的普及性,我们有了一些意图和一致性,从而能够帮助解决我们这个时代最大的技术挑战之一。

segmentfault 公众号

你可能感兴趣的:(数据安全思考:数据安全取决于安全的软件开发供应链)