乐趣区

关于java:YAML-有漏洞被弃用网友YAML-不背锅

文 | Travis

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

Tensorflow 是一个基于 Python 的机器学习和人工智能我的项目,该我的项目由 Google 开发。近日 TensorFlow 曾经放弃了对 YAML 的反对,以修复一个要害的代码执行破绽。

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 维护者。

这个破绽的起源是 TensorFlow 代码中臭名远扬的 “yaml.unsafe_load()” 函数。

平安研究员 Arjun Shibu 示意,” 我在 TensorFlow 中搜寻了 Pickle 和 PyYAML 的反序列化模式,令人诧异的是,我发现了对危险函数 yaml.unsafe_load() 的调用。”

家喻户晓,”unsafe_load” 函数能够对 YAML 数据进行相当自在的反序列化 —— 它解析了所有的标签,即便是那些不受信赖的输出上已知不平安的标签。该函数间接加载 YAML 输出而不对其进行清理,这使得应用恶意代码注入数据成为可能。

序列化的应用在机器学习利用中十分广泛。训练模型是一个低廉且迟缓的过程。因而,开发人员常常应用事后训练好的模型,这些模型曾经存储在 YAML 或 TensorFlow 等 ML 库反对的其余格局中。

在该破绽被披露后,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 多个安全漏洞。

近期热文举荐:

1.1,000+ 道 Java 面试题及答案整顿 (2021 最新版)

2. 别在再满屏的 if/ else 了,试试策略模式,真香!!

3. 卧槽!Java 中的 xx ≠ null 是什么新语法?

4.Spring Boot 2.5 重磅公布,光明模式太炸了!

5.《Java 开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞 + 转发哦!

退出移动版