CVE 是软件组件中发现的常见漏洞和暴露。由于现代软件及其众多层、相互依赖关系、数据输入和库的复杂性,漏洞往往会随着时间的推移而出现。忽视高 CVE 分数会导致安全漏洞和不稳定的应用程序。
由于数据科学家处理大量数据,因此他们需要对所使用的软件组件负责,以最大限度地降低风险并保护客户数据。安全领域的一条黄金法则就是,只要有有价值的数据存在,黑客就会出现。
软件开发人员定期参考 CVE 数据库和分数,以最大限度地降低在应用程序或网页中使用存在漏洞的组件(包和二进制文件)的风险。他们还会监控当前使用的组件是否存在漏洞。为了降低开源软件包安全漏洞带来的风险,数据科学团队需要借鉴软件开发人员的做法,将其应用于其数据科学和机器学习管道。
但是,开源软件不是最安全的软件吗?
通常情况下,是的。开源软件接受更多人的关注,比专有软件更透明。但是,与所有软件一样,它仍然存在漏洞。一些最臭名昭著的数据泄露事件是由于开源软件中的漏洞造成的,例如 Apache Struts 和 OpenSSL。攻击开源软件也有更大的回报,因为使用它的人更多。与所有软件组件一样,Python 包也可能存在漏洞。如果组织没有积极监控漏洞,那么这些漏洞很可能随着时间的推移而渗透到其模型和应用程序中。
我应该注意什么?
企业数据科学家应该检查将用于公司项目的所有软件包,以确保它们在 CVE 数据库中具有低风险。当有人发现 CVE 时,他们会将其报告给 CVE 编号机构 (CNA)。CNA 为 CVE 分配识别号,并在公开可访问的数据库中列出它们。许多 IT 和软件开发团队参考美国国家标准与技术研究院的 数据库 (NIST) 以获取更新。每年都会报告数千个新的漏洞。CVE 数据库中列出的每个漏洞都有一个 0.1 到 10 的分数,10 表示最高风险级别。这些分数是根据可利用性、影响、修复级别、报告置信度和其他因素得出的。要更好地了解 CVE 分数的计算方法,请阅读 FIRST 的文档,该文档详细描述了评分系统。
您的 DevOps 团队可能已经确定了贵公司可以接受的分数范围。与您的 CISO 或 DevOps 经理交谈,了解是否已经设置了阈值。确定您的风险阈值,避免下载任何 CVE 分数超出阈值的软件包。CVE 分数还有助于您确定如何管理威胁(修复)以及如何优先安排发布。
除了检查 CVE 分数外,您的团队还应该评估您有兴趣使用的每段软件的信誉。执行此操作的一些指南包括检查有多少贡献者参与了项目以及发布历史的节奏。它是否相当一致?代码库的活动程度如何?这一点很重要,因为 CVE 分数本身并不意味着您应该或不应该使用某个软件包。漏洞可以被修复的速度也至关重要。您还应该确保使用最新版本。
听起来很费时...
是的,确实如此。我们从进行手动检查以对照 CVE 数据库进行检查的数据科学团队那里了解到,这每年会占用数百小时,而这些时间本可以更好地用于构建、训练和部署模型。虽然很费时,但像金融和医疗保健这样的受监管行业中的公司还是会花时间进行检查,因为对他们来说,风险太高了。好消息是,有一些工具可以自动化 CVE 监控流程。
DevOps 团队使用漏洞扫描程序和托管存储库来自动管理软件包和工件。这些工具可以让他们了解软件包的风险程度,并允许他们在必要时将其列入黑名单。数据科学团队需要类似的工具。这就是我们创建 Anaconda Team Edition 的原因,这是一个镜像存储库,供数据科学团队扫描最新的 Conda 和其他软件包漏洞,并根据企业安全标准将软件包列入黑名单或白名单。我们的镜像存储库帮助受监管行业中的公司以高效的方式自信地利用开源创新。