正文|特拉维斯制作|OSC开源社区(ID:oschina2013)Tensorflow是谷歌开发的一个基于Python的机器学习和人工智能项目。TensorFlow最近放弃了对YAML的支持,以修复一个关键的代码执行漏洞。YAML或YAMLAin'tMarkupLanguage是一种人类可读的数据序列化语言,用于在进程和应用程序之间传递对象和存储数据,许多Python应用程序使用YAML来序列化和反序列化对象。此漏洞的CVEID为CVE-2021-37678。TensorFlow和Keras(TensorFlow的包装器项目)的维护者表示,该漏洞源于YAML的不安全解析,当应用程序反序列化以YAML格式提供的Keras模型时,这可能允许攻击者执行任意代码。当应用程序从非真实来源读取错误或恶意数据时,通常会出现反序列化漏洞。此YAML反序列化漏洞的严重等级为9.3,安全研究员ArjunShibu已将其报告给TensorFlow维护人员。此漏洞的来源是TensorFlow代码中臭名昭著的“yaml.unsafe_load()”函数。安全研究员ArjunShibu说,“我在TensorFlow中搜索了Pickle和PyYAML反序列化模式,令人惊讶的是,我发现了对危险函数yaml.unsafe_load()的调用。”众所周知,“unsafe_load”函数可以对YAML数据进行相当自由的反序列化——它解析所有标签,甚至是那些已知在不受信任的输入上不安全的标签。此函数直接加载YAML输入而不对其进行清理,这使得注入带有恶意代码的数据成为可能。序列化的使用在机器学习应用程序中非常普遍。训练模型是一个昂贵且缓慢的过程。因此,开发人员经常使用已经以YAML或ML库(如TensorFlow)支持的其他格式存储的预训练模型。漏洞被披露后,TensorFlow维护者决定完全放弃对YAML的支持,转而使用JSON进行反序列化。值得注意的是,TensorFlow并不是第一个,也不是唯一一个使用YAMLunsafe_load的项目。这个函数的使用在Python项目中相当普遍。TensorFlow的维护者表示,CVE-2021-37678漏洞将在TensorFlow2.6.0版本的更新中得到修复,同时也会回传到之前的2.5.1、2.4.3和2.3.4版本中。自今年年初以来,谷歌已经修复了TensorFlow中的100多个安全漏洞。近期热点文章推荐:1.1,000+Java面试题及答案(2021最新版)2.别在满屏的if/else中,试试策略模式,真的很好吃!!3.操!Java中xx≠null的新语法是什么?4、SpringBoot2.5发布,深色模式太炸了!5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!
