YAML出现严重的反序列化漏洞,谷歌TensorFlow将采用 JSON
聚焦源代码安全,网罗国内外最新资讯!
编译:代码卫士
由谷歌开发的基于 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 modelspayload = '''
!!python/object/new:type
args: ['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)
国内首个专注于软件开发安全的产品线。
觉得不错,就点个 “在看” 或 "赞” 吧~
YAML出现严重的反序列化漏洞,谷歌TensorFlow将采用 JSON相关推荐
- 深入理解JNDI注入与Java反序列化漏洞利用
rmi 和 jndi 这些概念,一直接触,但是看了会儿 还是略微懵逼,这篇文章 暂时理清了我的思路 [承上启下]----------------------------------上边属于我自己瞎扯的 ...
- 为修复一个代码执行安全漏洞,TensorFlow决定不再支持YAML
TensorFlow是谷歌开发的基于Python的机器学习和人工智能项目.为修复一个代码执行安全漏洞,TensorFlow决定不再支持YAML.YAML(Yet Another Markup Lang ...
- 【网络安全】Nacos Client Yaml反序列化漏洞分析
背景 Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Nacos 帮助您更敏捷和容易地构建.交付和 ...
- Pyyaml-yaml.load反序列化漏洞
#CTF #CTF-漏洞使用 前两天打网鼎杯的时候遇到的这题,在这个反序列化漏洞上,试了很多种方法都没有成功,非常遗憾,所以就简单记录一下yaml.load这个漏洞. 介绍 YAML 是 " ...
- 反序列化漏洞-JAVA
反序列化漏洞-JAVA JAVA反序列化了解 反序列化漏洞原理 WebGoat靶场反序列化案例. 发现反序列化漏洞 JAVA反序列化了解 序列化 序列化:将对象转换为字节序列. 反序列化:把字节序列回 ...
- 渗透测试 ( 0 ) --- XSS、CSRF、文件上传、文件包含、反序列化漏洞
漏洞数据库:https://www.exploit-db.com/google-hacking-database 1.渗透测试 实用 浏览器插件 chrome.edge 插件:搜索 cookie,安装 ...
- JAVA反序列化漏洞简单理解
反序列化原理 关于反序列化的原理不在多说,和php类似,序列化的数据是方便存储的,而存储的状态信息想要再次调用就需要反序列化 Java反序列化的API实现 实现方法 Java.io.ObjectOut ...
- python pickle反序列化漏洞_Python 的另外几个反序列化漏洞检查点
哔哔两句 最近刚做完某个白盒渗透项目,通读了整个项目代码后发现了几个比较明显的 Python 反序列化漏洞的问题. 代码中使用了 Pickle 这个 Python 反序列化模块,除此以外还发现了另外一 ...
- 个php反序列化漏洞,PHP反序列化漏洞学习(一)
前言:PHP反序列化也是web安全中常见的一种漏洞,这次就先来大致了解一下PHP反序列化漏洞的基础知识. 一.PHP序列化和反序列化 在学习PHP反序列化漏洞时,先来了解一下基础的知识. (一)PHP ...
最新文章
- Effective C++学习笔记(Part Five:Item 26-31)
- 分享几个vs code 的几个插件
- linux配置chrony时间同步
- C++ STL学习笔记 : 2. unordered map 容器
- mysql+根密码是什么意思,重设MySQL根密码
- 洛谷P1307题解(Java语言描述)
- io读取文件无地址_流的基本概念和IO流入门
- 基于知识图谱的推荐系统总结
- 聊天记录曝光,T-Mobile 证实内部工具和源代码遭 Lapsus$ 访问
- java线程抢占式执行,Java并发基础(一)-线程基础
- 一名Java高级工程师需要学什么?
- C/C++语言开发环境,【5款免费编程器】请查收!
- 核桃的营养价值,核桃的功效与作用
- 跨站请求伪造(CSRF)攻击
- 高分一号WFV影像云检测工具(免费)
- tp5shop tp5商城 WSTMart B2B2C开源商城系统
- 计算机维修中的五大基本原则(思路)
- 当我知道这些网址以后,我后悔以前没有好好学
- Python数据处理课程设计-房屋价格预测
- python 人工智能编程_最适合人工智能开发的5种编程语言