yaml有漏洞被弃用?网友:yaml不背锅!

Java技术栈 Java技术栈     2023-01-02     266

关键词:

点击关注公众号,Java干货及时送达

文 | Travis
出品 | OSC开源社区(ID:oschina2013)

Tensorflow 是一个基于 Python 的机器学习和人工智能项目,该项目由 Google 开发。

近日 TensorFlow 已经放弃了对 YAML 的支持,以修复一个关键的代码执行漏洞。

YAML 或 YAML Ain't Markup Language 是一种人类可读的数据序列化语言,用于在进程和应用程序之间传递对象和存储数据,许多 Python 应用程序都使用 YAML 来序列化和反序列化对象。

该漏洞的 CVE ID 为 CVE-2021-37678。TensorFlow 和 Keras(TensorFlow 的一个封装项目)的维护者表示,该漏洞源于对 YAML 的不安全解析,漏洞会在应用程序反序列化以 YAML 格式提供的 Keras 模型时,使攻击者可以执行任意代码。反序列化漏洞通常发生在应用程序读取来自非真实来源的不良或恶意数据时。

这个 YAML 反序列化漏洞的严重程度被评为 9.3 级,由安全研究员 Arjun Shibu 报告给 TensorFlow 维护者。

这个漏洞的来源是 TensorFlow 代码中臭名昭著的 "yaml.unsafe_load()" 函数。

安全研究员 Arjun Shibu 表示,"我在 TensorFlow 中搜索了 Pickle 和 PyYAML 的反序列化模式,令人惊讶的是,我发现了对危险函数 yaml.unsafe_load() 的调用。"

众所周知,"unsafe_load" 函数可以对 YAML 数据进行相当自由的反序列化 —— 它解析了所有的标签,即使是那些不受信任的输入上已知不安全的标签。该函数直接加载 YAML 输入而不对其进行清理,这使得使用恶意代码注入数据成为可能。

序列化的使用在机器学习应用中非常普遍。训练模型是一个昂贵且缓慢的过程。因此,开发人员经常使用预先训练好的模型,这些模型已经存储在 YAML 或 TensorFlow 等 ML 库支持的其他格式中。

在该漏洞被披露后,TensorFlow 的维护者决定完全放弃对 YAML 的支持,而使用 JSON 进行反序列化。

值得注意的是,TensorFlow 并不是第一个、也不是唯一一个被发现使用 YAML unsafe_load 的项目。该函数的使用在 Python 项目中是相当普遍的。

TensorFlow 的维护者表示,CVE-2021-37678 漏洞将于 TensorFlow 2.6.0 版本的更新中进行修复,并且还将被回传到之前的 2.5.1、2.4.3 和 2.3.4 版本。自年初以来,Google 已经在 TensorFlow 上修复了 100 多个安全漏洞。



关注Java技术栈看更多干货

获取 Spring Boot 实战笔记!

做不背锅的运维

系统除了故障,第一个挨板子的就是运维人员。不管任何原因,先找运维,给他一口好锅。运维好苦啊!稳定运行时,似乎是多余的存在;又问题时,要替人背锅。与其被动,不如主动一点,不做背锅侠!怎么做呢?先看几个例... 查看详情

现在 Google 网络搜索 API 已被弃用,还都有哪些替代方案? [关闭]

】现在Google网络搜索API已被弃用,还都有哪些替代方案?[关闭]【英文标题】:WhatarethealternativesnowthattheGooglewebsearchAPIhasbeendeprecated?[closed]现在Google网络搜索API已被弃用,还有哪些替代方案?[关闭]【发布时间】:2011-05-0405:38:54【... 查看详情

TSLint 已被弃用。这对 Angular 有何影响?

】TSLint已被弃用。这对Angular有何影响?【英文标题】:TSLintisbeingdeprecated.HowdoesthisaffectAngular?【发布时间】:2020-05-2104:36:35【问题描述】:我工作的公司即将启动一个新的企业Angular应用程序。在阅读linting时,我读到了TSLintisbeingd... 查看详情

如果有“!”,如何使用 PyYAML 解析 YAML在 YAML 中

】如果有“!”,如何使用PyYAML解析YAML在YAML中【英文标题】:HowtoParseYAMLUsingPyYAMLifthereare\'!\'withintheYAML【发布时间】:2019-02-1320:53:53【问题描述】:我有一个YAML文件,我只想解析description变量;但是,我知道我的CloudFormation模板... 查看详情

PageRequest 构造函数已被弃用

】PageRequest构造函数已被弃用【英文标题】:PageRequestconstructorshavebeendeprecated【发布时间】:2017-12-0413:02:18【问题描述】:我正在处理SpringDataCommonsv2+快照,我看到PageRequest的构造函数已被弃用。这似乎发生在M1和M2之间。不幸的是... 查看详情

NSTextField insertText 方法已被弃用,替代品是啥?

】NSTextFieldinsertText方法已被弃用,替代品是啥?【英文标题】:NSTextFieldinsertTextmethodisdeprecated,whatisthereplacement?NSTextFieldinsertText方法已被弃用,替代品是什么?【发布时间】:2017-07-0402:23:26【问题描述】:我有一个NSTextField,我想... 查看详情

现在 FusedLocationApi 已被弃用,当我也有位置监听器时,如何实现 FusedLocationProvideClient?

】现在FusedLocationApi已被弃用,当我也有位置监听器时,如何实现FusedLocationProvideClient?【英文标题】:NowthatFusedLocationApiisdeprecatedhowcaniimplementFusedLocationProvideClientwhenialsohavelocationlistener?【发布时间】:2018-09-0714:25:52【问题描述】... 查看详情

jQuery 模板已被弃用?

】jQuery模板已被弃用?【英文标题】:jQueryTemplatesaredeprecated?【发布时间】:2011-12-1605:44:01【问题描述】:我看到,根据jQueryplugintemplatepage,jQuery插件已经从测试版变为弃用,而没有通过真正的发布。我在jquery.com或其相关网站上... 查看详情

系统故障工程师居然可以不背锅?看看几家大厂是怎么做到的!(内附故障复盘模板)

#一分钟精华速览#系统故障无法避免,事故发生的原因多种多样,故障定责不是为了指责而是为了后续的优化改进,可很多企业在定责时难免遇到团队、个人之间推卸责任的情况,定责定的到底是什么“责”?​​TakinTalks​​&nb... 查看详情

解决vscode提示bodyparser已被弃用的问题

解决Vscode提示bodyparser已被弃用的问题被弃用真的就不能用了吗?理论上来说,被弃用的用还是能用,但是out了,它有更好的方法可以使用express已经把bodyParser合并进去了,我们直接express.urlendoced就可以了 查看详情

yaml-cpp 中带有 YAML 怪物示例的“非法块条目”

】yaml-cpp中带有YAML怪物示例的“非法块条目”【英文标题】:"Illegalblockentry"withYAMLmonstersexampleinyaml-cpp【发布时间】:2012-02-0719:36:39【问题描述】:我正在运行找到的示例here以尝试在C++中使用YAML。我将代码逐字复制到新... 查看详情

c++ 中的 yaml.cpp 库有问题

】c++中的yaml.cpp库有问题【英文标题】:Havingproblemswithyaml.cpplibinc++【发布时间】:2013-03-2902:13:26【问题描述】:我很难在我的项目中使用yaml-cpp0.3.0我下载了yaml,并像http://code.google.com/p/yaml-cpp/所说的那样使用VS92008WIN64构建它。所... 查看详情

YAML::Node 有 Mark 结构吗?

】YAML::Node有Mark结构吗?【英文标题】:DoesYAML::NodehaveaMarkstructure?【发布时间】:2014-09-2118:27:53【问题描述】:我知道在解析过程中,yaml-cpp可以抛出一个异常,该异常具有很好的文件位置(行号和列号)信息,用于显示异常发... 查看详情

UIUserNotificationType 在 iOS10 Swift 3.0 中被弃用

】UIUserNotificationType在iOS10Swift3.0中被弃用【英文标题】:UIUserNotificationTypewasdeprecatediniOS10Swift3.0【发布时间】:2016-09-3002:33:20【问题描述】:我在iOS10中收到此警告,之前在iOS9上运行良好:-在iOS10中是否有其他功能可以修复此警... 查看详情

nuclei——一款基于yaml语法模板的快速漏洞扫描工具(代码片段)

...介1.简介Nuclei是一款基于YAML语法模板的开发的定制化快速漏洞扫描器。它使用Go语言开发,具有很强的可配置性、可扩展性和易用性。目前该项目在Github上已经有6.6k个stars。官网:https://nuclei.projectdiscovery.ioNuclei项目地址&#... 查看详情

YAML 有 ANTLR4 语法吗?

】YAML有ANTLR4语法吗?【英文标题】:IsthereanANTLR4grammarforYAML?【发布时间】:2014-10-2403:33:12【问题描述】:由于YAML的语法相当复杂,是否可以主要使用ANTLR4为YAML编写解析器?我一直在寻找实现YAML的示例,例如缩进解析和数据类... 查看详情

如何在 Ruby 中的 YAML 文件中包含 YAML 文件

】如何在Ruby中的YAML文件中包含YAML文件【英文标题】:HowtoincludeaYAMLfileinsideaYAMLfileinRuby【发布时间】:2011-01-1716:57:17【问题描述】:在YAML中是否有自定义标签,让ruby​​可以在YAML文件中包含YAML文件?#E.g.:---!includefilename:another.y... 查看详情

NSDictionary init(contentsOfFile:) 已被弃用,现在怎么办?

】NSDictionaryinit(contentsOfFile:)已被弃用,现在怎么办?【英文标题】:NSDictionaryinit(contentsOfFile:)isdeprecatedsonowwhat?【发布时间】:2017-07-1216:40:44【问题描述】:最近(从iOS11开始),NSDictionary中的init(contentsOfFile:)已弃用。我想成为一... 查看详情