向图表中心添加Helm图表安全缓解说明

更新:截至2021年5月1日- ChartCenter中央存储库已经日落,所有功能已弃用。有关中心日落的更多信息,请阅读中心弃用博客文章
今年早些时候,我们推出了ChartCenter,这是我们最新的社区平台,旨在帮助Kubernetes开发者查找舵图。这个新的自由舵机中央储存库我们在构建时考虑了图表的不变性——这意味着即使原始来源出现故障,每个版本的Helm图表和ChartCenter中的每个版本也将始终可用。随着HelmHub被弃用,不变性变得尤为重要——在那里可以找到的许多图表和版本继续存在于ChartCenter上,每个版本都包含大量的元数据舵图依赖项、应用程序版本、Helm版本,以及有多少其他图表正在使用此版本。
ChartCenter的主要功能之一是免费漏洞信息。对于每个图表版本,ChartCenter使用JFrog x光来扫描漏洞,然后使用CVSS 2评级计算高、中、低和未知的CVE分数。
在ChartCenter中发现的漏洞
CVE (Common Vulnerabilities and Exposures)列表是由美国国土安全部(DHS)网络安全和信息保障办公室(OCSIA)赞助的一份公开漏洞报告列表。许多网络安全公司使用CVE以及其他更专有的数据库来帮助组织清楚地了解他们的问题。通过为给定的漏洞或暴露创建标准化标识符,CVE可以更容易地在组织之间共享有关已知漏洞的信息。CVE使组织能够为评估其安全工具的覆盖范围设置基线。CVE的公共标识符帮助组织查看每个工具涵盖的内容以及它们对组织的适用性。
通过导航到每个图表页面上的安全选项卡,用户可以查看漏洞的详细信息,包括漏洞所在的CVE ID、Description、Component和Image。

缓解笔记
当我们测试这个安全特性时,我们从不同的社区成员那里得到了反馈,许多这些漏洞都存在于图表维护者无法控制的第三方组件中,如果我们让维护者能够向最终用户提供一些cve实际影响应用程序的上下文,那就更好了。
为了取得正确的平衡,并为图表维护者和用户提供工具来授权他们的决策,我们创建了一个功能,我们称之为“缓解笔记”。虽然许多工具(如ClaireOS和DockerHub)也提供免费的容器扫描,但JFrog的ChartCenter是第一个可以在一个视图中轻松查看所有这些信息的地方,并在一个UI上提供这些信息,使用户可以通过多个版本的图表查看这些问题。这让我们意识到,正确的做法是为组织提供一些与用户讨论图表安全性的方法。
这个问题促使我们为执掌图表维护人员,使他们能够直接在ChartCenter UI上吸引用户。此解决方案还需要继续向图表用户提供有关整个应用程序安全性的透明性。取得这种平衡是一次有趣的冒险。我们开始将所有中等、低、未知的CVE细节持续向公众开放,但高漏洞数据只有在社区用户注册并登录我们的中心后才能访问。
提供维护说明
为cve提供缓解措施可以使用security-mitigation.yaml文件。一旦用户向我们提供了这些信息,安全选项卡上的每个CVE旁边就会出现一个图标。

当你点击图标时,你会看到这样的注释:

缓解和咨询例子
如果您是一名开发人员,不熟悉向用户提供这类建议,请记住有许多公司可以提供示例。其中许多公司都有自己的缓解流程安全漏洞在他们的代码中,有时他们在他们的网站上建立一个专门的页面或门户来提供这些信息。以下是采用公司标准缓解建议来处理安全风险的企业示例,并简要概述了其策略。这些示例可用于您自己的安全缓解。
DrupalDrupal的安全团队管理安全咨询公告,通知站点所有者关于Drupal核心或贡献项目中报告的安全问题。他们的建议还为开发人员提供了修复问题所需的步骤。了解更多关于Drupal的安全咨询流程。
微软Microsoft有一个可利用性指数:Microsoft评估与Microsoft安全更新相关的每个重要或关键严重性漏洞的潜在可利用性,然后将可利用性信息作为每月Microsoft安全更新详细信息的一部分发布。如果在发布详细信息后,微软确定可利用性指数评估需要更改,它将更改评估并通过技术安全通知通知客户。你可以看到这是什么样子的这个例子。
图表中心缓解YAML
填好YAML文件后,您可以将该文件包含在下一个版本的Helm图表中,我们会将您的缓解说明添加到ChartCenter UI中。或者,您可以通过电子邮件向我们发送您的security-mitigation.yaml只要你能证明你是Helm Chart的所有者(即你的电子邮件包含在该图表的存储库信息中),就可以直接导入该文件。
安全缓解规范支持3个用例:
- 生产商提供总体和/或特定CVE缓解信息的能力。
- 生产者能够将安全指向托管在外部wiki或网页上的缓解网站。
- 生产者指向外部托管的能力
security-mitigation.yaml文件。

| 场 | 描述 | 类型 |
总结 |
适用于所有图表版本的总体缓解摘要 | 文本 |
securityAdvisoryUrl |
指向外部托管的缓解信息(如wiki、网页等)的链接。 | url |
useMitigationExternalFile |
真正的意思security-mitigation.yaml托管在其他地方。False表示当前文件的内容表示安全缓解信息。默认值:false |
真/假 |
mitigationExternalFileUrl |
如果设置为true,则此参数指向外部托管的urlsecurity-mitigation.yaml |
url |
应对:cf |
已提供缓解说明的cve列表。 | CVE-YYYY-NNNN |
mitigations: cves: affectedPackageUri |
指示为其提供安全缓解的包Uri。目前我们只支持两个包uri: 码头工人 |
uri |
mitigations: cves:受影响的版本 |
SemVer约束聪明人/ semver如用于Chart.yaml为kubeVersion指定哪个版本应该使用缓解信息。 |
例如:“> 1.2.x。 |
缓解:cves:描述 |
CVE级别的缓解说明。 | 文本描述 |
下一个步骤
如果您是图表维护者,请了解更多有关如何做到这一点的信息在我们的UI中激活缓解说明功能。然后填写security-mitigation.yaml文件。如有任何其他问题,请发送电子邮件至chartcenter@www.si-fil.com。