查看原文
其他

YAML出现严重的反序列化漏洞,谷歌TensorFlow将采用 JSON

Ax Sharma 代码卫士 2022-11-01

 聚焦源代码安全,网罗国内外最新资讯!

编译:代码卫士

由谷歌开发的基于 Python 的开源机器学习和人工智能项目 TensorFlow 放弃对 YAML 的支持,以修复严重的代码执行漏洞。

YAML (Yet Another Markup Language) 是开发人员使用的人类可读数据序列化语言,用于处理配置文件和传输中的数据。

TensorFlow 中不受信任的反序列化漏洞

TensorFlow 和 TensorFlow 的封装项目 Keras 的维护人员修复了因 YAML 解析不安全而引发的不可信序列化漏洞。该漏洞的编号为 CVE-2021-37678,为严重漏洞,可使攻击者在应用程序反序列化 YAML 格式下的 Keras 模型时执行任意代码。

一般而言,当应用程序从未认证来源读取畸形或恶意数据时就会触发反序列化漏洞。应用程序读取并反序列化数据后,它可能崩溃,从而导致拒绝服务条件或在更糟糕的情况下执行攻击者的任意代码。

该 YAML 反序列化漏洞的评分为9.3,由安全研究员 Arjun Shibu 报告给 TensorFlow 的维护人员。

而该漏洞的源头在于 TensorFlow 代码中的 “yaml.unsafe_load()” 函数。


该函数很随意地反序列化 YAML 数据,它会解析所有的标记,甚至会解析已知的不安全的不受信任输入。也就是说,在理想情况下 “unsafe_load” 应当仅被来自不可信来源的输入调用,而且应当不含任何恶意内容。否则,攻击者可利用该反序列化机制,通过在尚未被序列化的 YAML 数据中注入恶意 payload 的方式执行所选代码。

安全公告分享了此类 PoC exploit:

from tensorflow.keras import models
payload = '''!!python/object/new:typeargs: ['z', !!python/tuple [], {'extend': !!python/name:exec }]listitems: "__import__('os').system('cat /etc/passwd')"''' models.model_from_yaml(payload)


TensorFlow 完全摈弃 YAML,使用 JSON

收到该漏洞报告后,TensorFlow 决定完全摒弃 YAML 支持,而是使用 JSON 反序列化。项目维护人员在安全公告中指出,“鉴于 YAML 格式支持要求大量工作,因此我们暂时将其删除。我们已取代  `Model.to_yaml()` 和 `keras.models.model_from_yaml` 方法,触发 “RuntimeError”,因为它们可被滥用于引发任意代码执行。建议使用JSON 反序列化,或者更好的选择是序列化至 H5。“

值得注意的是,TensorFlow 并非第一个也非唯一一个使用 YAML unsafe_load 函数的项目。该函数在 Python 项目中的使用非常普遍。

GitHub 搜索结果显示有数千个项目使用该函数,其中有些开发人员提议进行改进。

该漏洞的修复方案将在 TensorFlow 版本2.6.0中现身,同时将被反向兼容至之前版本 2.5.1、2.4.3以及2.3.4。




开奖啦!!!!!】
限时赠书|《软件供应链安全—源代码缺陷实例剖析》新书上市
上次的限时赠书活动中奖名单已出炉,恭喜以下同学中奖,请微信后台私信地址,本周我们将陆续发送书籍。

@whyseu @。@HFwuhome@惊蛰 @nimo @XuZ @淡然 @Marco韬 @王孟 @Wecat@nwnλ @MOBE @湘北二两西香葱@※ @搬砖小土妞@云烟过眼 @r00t@小风 @傲雪@最好走的路是套路 @Zhao.xiaojun @浅笑淡然 @X-Star @Erick2013 @小秦同学 @X @王骏 @欢寻 @nbp@Mr. Guo

大家可移步京东电子工业出版社一睹为快!
https://item.jd.com/12927539.html 或直接点击“原文链接”购买。


如下是本书相关讲解:





推荐阅读
一步一步回顾分析攻防演习中的 WebLogic T3 反序列化 0day 漏洞
APACHE OFBIZ XML-RPC 反序列化漏洞 (CVE-2020-9496) 的复现与分析
XStream 反序列化漏洞 (CVE-2020-26258 & 26259) 的复现与分析
Apache Commons Collections反序列化漏洞分析与复现





原文链接

https://www.bleepingcomputer.com/news/security/googles-tensorflow-drops-yaml-support-due-to-code-execution-flaw/


题图:Pixabay License



本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。




奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。

    觉得不错,就点个 “在看” 或 "赞” 吧~



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存