开源软件的安全性引起了业界的关注,但解决方案需要就实施方面的挑战和合作达成共识。
问题很复杂,涉及的方面很多, 供应链,依赖性管理,身份等方面的信息。 为此,Google最近发布了一个框架(“知道,阻止,修复”),该框架说明了业界如何考虑开源和特定领域中首先需要解决的漏洞。
Google解释了其原因:
“由于最近发生的事件,软件界对供应链攻击的真正风险有了更深入的了解。 从安全的角度来看,开源软件的风险应该较小,因为所有代码和依赖项都是开放的,并且可以进行检查和验证。 尽管这通常是正确的,但可以假设人们实际上是在进行这项检查工作。 由于存在如此多的依赖关系,因此无法监视所有依赖关系,并且许多开源软件包的维护不完善。
“程序直接或间接依赖于成千上万的程序包和库是很常见的。 例如,Kubernetes现在依赖大约1000个软件包。 开源可能使用依赖性而不是专有软件,并且来自广泛的供应商。 可以信任的独立实体的数量可能非常大。 这使得很难理解产品中如何使用开源以及哪些漏洞可能是相关的。 也不能保证所构建的内容将与源代码匹配。
在Google提出的框架内,建议将这一困难分为三个基本独立的问题领域,每个领域都有特定的目标:
了解您的软件漏洞
了解您的软件漏洞比您预期的要难得多 因为许多的原因。 好的 存在报告漏洞的机制, 尚不清楚它们是否真的影响您使用的软件的特定版本:
- 目标:准确的漏洞数据:首先,从所有可用数据源中捕获准确的漏洞元数据至关重要。 例如,了解哪个版本引入了漏洞可以帮助确定软件是否受到影响,而知道何时对其进行了修补可以准确,及时地修复漏洞(以及可能被利用的狭窄窗口)。 理想情况下,此分类工作流程应是自动化的。
- 其次,大多数漏洞在于依赖项,而不是直接编写或控制的代码中。 因此,即使您的代码没有更改,影响您软件的漏洞的情况也会不断发生变化-有些是固定的,有些是添加的。
- 目的:漏洞数据库的标准架构需要基础结构和行业标准来跟踪和维护开源漏洞,了解其后果并管理其缓解措施。 标准漏洞方案将允许通用工具在多个漏洞数据库上运行并简化跟踪任务,尤其是当漏洞跨越多种语言或子系统时。
避免添加新漏洞
避免产生漏洞是理想的 尽管测试和分析工具可以提供帮助,但预防始终是一个困难的课题。
在这里, Google建议着重于两个特定方面:
- 决定新的依赖关系时要了解风险
- 改善关键软件开发流程
修复或消除漏洞
Google承认维修的一般问题超出了它的权限范围,但是 发布者认为,演员可以做更多的事情来解决这个问题 专门用于管理依赖项中的漏洞。
它还提到:
“今天在这方面几乎没有什么帮助,但是随着我们提高准确性,必须投资于新的流程和工具。
“当然,一种选择是直接修补漏洞。 如果您可以通过向后兼容的方式来执行此操作,则该解决方案将适用于所有人。 但是挑战在于,您不太可能有问题的经验或直接进行更改的能力。 修复漏洞还假定负责维护软件的人员知道问题所在,并且拥有披露漏洞的知识和资源。
数据来源: https://security.googleblog.com
英文原文说:
在这里,我们关注两个特定方面:
-在决定新的依赖时了解风险
-改善关键软件的开发流程
版本“LinuxAdictos” 说:
Google建议在此重点关注两个特定方面:
-了解选择新瘾的风险。
-改进关键软件开发流程
新的瘾!!