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

admin 2022年4月9日23:58:35评论30 views字数 1217阅读4分3秒阅读模式

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

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

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

为修复漏洞,TensorFlow不再支持YAML
CVE-2021-37678:TensorFlow不可信反序列化漏洞

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

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

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

TensorFlow中有漏洞的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

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

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

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

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

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

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

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

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

本文始发于微信公众号(嘶吼专业版):为修复漏洞,TensorFlow不再支持YAML

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月9日23:58:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   为修复漏洞,TensorFlow不再支持YAMLhttps://cn-sec.com/archives/540980.html

发表评论

匿名网友 填写信息