YAML 有漏洞被弃用?网友:YAML 不背锅!

简介: 文 | Travis出品 | OSC开源社区(ID:oschina2013)Tensorflow 是一个基于 Python 的机器学习和人工智能项目,该项目由 Google 开发。近日 TensorFlow 已经放弃了对 YAML 的支持,以修复一个关键的代码执行漏洞。

文 | Travis

出品 | OSC开源社区(ID:oschina2013)


Tensorflow 是一个基于 Python 的机器学习和人工智能项目,该项目由 Google 开发。近日 TensorFlow 已经放弃了对 YAML 的支持,以修复一个关键的代码执行漏洞。


image.png


YAML 或 YAML Ain't Markup Language 是一种人类可读的数据序列化语言,用于在进程和应用程序之间传递对象和存储数据,许多 Python 应用程序都使用 YAML 来序列化和反序列化对象。


该漏洞的 CVE ID 为 CVE-2021-37678。TensorFlow 和 Keras(TensorFlow 的一个封装项目)的维护者表示,该漏洞源于对 YAML 的不安全解析,漏洞会在应用程序反序列化以 YAML 格式提供的 Keras 模型时,使攻击者可以执行任意代码。反序列化漏洞通常发生在应用程序读取来自非真实来源的不良或恶意数据时。


这个 YAML 反序列化漏洞的严重程度被评为 9.3 级,由安全研究员 Arjun Shibu 报告给 TensorFlow 维护者。


image.png


这个漏洞的来源是 TensorFlow 代码中臭名昭著的 "yaml.unsafe_load()" 函数。


安全研究员 Arjun Shibu 表示,"我在 TensorFlow 中搜索了 Pickle 和 PyYAML 的反序列化模式,令人惊讶的是,我发现了对危险函数 yaml.unsafe_load() 的调用。"


众所周知,"unsafe_load" 函数可以对 YAML 数据进行相当自由的反序列化 —— 它解析了所有的标签,即使是那些不受信任的输入上已知不安全的标签。该函数直接加载 YAML 输入而不对其进行清理,这使得使用恶意代码注入数据成为可能。


序列化的使用在机器学习应用中非常普遍。训练模型是一个昂贵且缓慢的过程。因此,开发人员经常使用预先训练好的模型,这些模型已经存储在 YAML 或 TensorFlow 等 ML 库支持的其他格式中。


image.png


在该漏洞被披露后,TensorFlow 的维护者决定完全放弃对 YAML 的支持,而使用 JSON 进行反序列化。


值得注意的是,TensorFlow 并不是第一个、也不是唯一一个被发现使用 YAML unsafe_load 的项目。该函数的使用在 Python 项目中是相当普遍的。


TensorFlow 的维护者表示,CVE-2021-37678 漏洞将于 TensorFlow 2.6.0 版本的更新中进行修复,并且还将被回传到之前的 2.5.1、2.4.3 和 2.3.4 版本。自年初以来,Google 已经在 TensorFlow 上修复了 100 多个安全漏洞。


相关文章
|
3月前
|
Java 测试技术 数据安全/隐私保护
通过yaml文件配置自动化测试程序
通过yaml文件可以将自动化测试环境,测试数据和测试行为分开,请看一下案例
127 4
|
JSON Kubernetes API
深入理解Kubernetes配置:编写高效的YAML文件
深入理解Kubernetes配置:编写高效的YAML文件
|
存储 运维 Serverless
函数计算产品使用问题之在YAML文件中配置了环境变量,但在PHP代码中无法读取到这些环境变量,是什么原因
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
291 1
|
Kubernetes 应用服务中间件 nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
291 2
k8s学习--YAML资源清单文件托管服务nginx
|
Kubernetes Docker Perl
k8s常见故障--yaml文件检查没有问题 pod起不来(一直处于创建中)
k8s常见故障--yaml文件检查没有问题 pod起不来(一直处于创建中)
496 1
ingress相关yaml文件报错且相关资源一切正常解决方法
ingress相关yaml文件报错且相关资源一切正常解决方法
154 0
ingress相关yaml文件报错且相关资源一切正常解决方法
|
运维 Kubernetes Serverless
Serverless 应用引擎使用问题之s.yaml文件中如何使用外部环境变量
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
存储 缓存 运维
函数计算产品使用问题之如何将外部环境变量放到s.yaml文件中使用
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
200 7
|
缓存 Serverless API
函数计算产品使用问题之没有s.yaml文件,修改代码如何重新部署
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
165 2