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

共 1658字,需浏览 4分钟

 ·

2021-09-21 20:40

上一篇:深夜看了张一鸣的微博,让我越想越后怕

文 | 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 多个安全漏洞。

感谢您的阅读,也欢迎您发表关于这篇文章的任何建议,关注我,技术不迷茫!小编到你上高速。
    · END ·
最后,关注公众号互联网架构师,在后台回复:2T,可以获取我整理的 Java 系列面试题和答案,非常齐全


正文结束


推荐阅读 ↓↓↓

1.不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事

2.如何才能成为优秀的架构师?

3.从零开始搭建创业公司后台技术栈

4.程序员一般可以从什么平台接私活?

5.37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...

6.IntelliJ IDEA 2019.3 首个最新访问版本发布,新特性抢先看

7.这封“领导痛批95后下属”的邮件,句句扎心!

8.15张图看懂瞎忙和高效的区别!

一个人学习、工作很迷茫?


点击「阅读原文」加入我们的小圈子!

浏览 28
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐