为修复漏洞,TensorFlow不再支持YAML - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

为修复漏洞,TensorFlow不再支持YAML

ang010ela 漏洞 2021-09-12 11:55:00
160718
收藏

导语:为修复一个代码执行安全漏洞,TensorFlow决定不再支持YAML。

tensorflow

TensorFlow是谷歌开发的基于Python的机器学习和人工智能项目。为修复一个代码执行安全漏洞,TensorFlow决定不再支持YAML。YAML(Yet Another Markup Language)是一个可读性高,用来表达数据序列化的格式。YAML参考了其他多种语言,包括C语言、Python、Perl,并从XML、电子邮件的数据格式。

CVE-2021-37678:TensorFlow不可信反序列化漏洞

安全研究人员Arjun Shibu在TensorFlow和Keras中发现了一个安全漏洞——CVE-2021-37678。该漏洞是由于不安全处理YAML引发的不可信反序列化漏洞,攻击者利用该漏洞可以在应用反序列化YAML格式中的Keras模型时执行任意代码。该YAML反序列化漏洞CVSS 评分为9.3分。反序列化漏洞主要发生于应用从不可信的源读取伪造的或恶意数据的情况。应用在读取和反序列化数据后,可能会引发DoS攻击条件甚至执行攻击者的任意代码。

漏洞来源于TensorFlow的yaml.unsafe_load()函数:

yaml.unsafe_load function callTensorFlow中有漏洞的yaml.unsafe_load()函数调用

unsafe_load函数的作用是反序列化YAML数据,该函数会解析所有的标签,包括来自不安全或不可信的输入。理想情况下,unsafe_load函数只有在输入来源于可信源时被调用。但攻击者利用通过在已经序列化的YAML数据中注入恶意payload来利用该机制执行代码。

该漏洞的PoC利用代码如下所示:

from tensorflow.keras import models
 
payload = '''
!!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

该漏洞提交后,TensorFlow决定启用YAML支持,并使用JSON反序列化。

但TensorFlow并不是唯一使用YAML unsafe_load的项目,该函数被广泛应用于Python项目中。GitHub显示有上千个引用该函数的搜索结果,目前已经有开发者提出了解决方案:

github results for applications using unsafe_load GitHub上使用unsafe_load的检索结果

目前,TensorFlow也已发布了该漏洞的补丁,受影响的版本和修复版本如下所示:

 image.png

本文翻译自:https://www.bleepingcomputer.com/news/security/googles-tensorflow-drops-yaml-support-due-to-code-execution-flaw/如若转载,请注明原文地址
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务