开发人员撤销YAML支持以防止剥削

TensorFlow中的避免错误允许任意执行

Google受欢迎的Tensorflow背后的团队开源Python机器学习库,由于任意代码执行漏洞,已撤销对YAML的支持。

YAML是一种通用格式,用于存储数据并在过程和应用程序之间传递对象。许多Python应用程序使用YAML来序列化和估算对象。

根据Github的咨询,Tensorflow和TensorFlow包装库Keras,使用不安全的功能来划分YAML编码的机器学习模型。

概念证明显示脆弱性被利用以返回敏感系统文件的内容:

图书馆的维护者在其咨询中说:“鉴于YAML格式支持需要大量的工作,我们暂时将其删除。”

避免不安全感

“挑剔的错误是用Python,PHP和Java等语言编写的代码的出色攻击表面,”发现该错误的安全研究人员Arjun Shibu告诉每日swbeplay2018官网ig

“我在Tensorflow中搜索了泡菜和pyyaml的挑剔模式,令人惊讶的是,我发现了危险功能的呼吁yaml.unsafe_load()。”


阅读更多微软警告关键的Azure云脆弱性影响Cosmos DB帐户


该函数直接加载YAML输入而无需消毒,这使得可以将数据注入恶意代码。

很遗憾,不安全的挑战是一种常见的做法。

Arjun说:“使用Grep.App等代码搜索应用程序进行进一步研究,我看到了成千上万的项目/库无需验证的Python对象。”“其中大多数是ML特定的,并将用户输入作为参数。”

对机器学习应用的影响

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

Arjun说:“由于ML应用程序通常接受用户的模型配置,因此我猜该漏洞的可用性很常见,因此很大一部分产品处于危险之中。”


阅读更多最新的黑客新闻


关于YAML脆弱性,IBM Research RPI-IBM AI研究合作的首席科学家Pin-Yu Chen告诉每日swbeplay2018官网ig

“从我的理解中,大多数基于AI/ML服务将需要YAML文件来指定配置 - 因此,我想说的安全指示很大。”

机器学习安全的许多研究都集中在对抗性攻击- 针对ML模型行为的修改数据。但是,这一最新发现提醒人们,与所有其他应用程序一样,安全编码是机器学习的重要方面。

陈说:“尽管这些攻击不是针对机器学习模型本身的目标,但无可否认,它们是严重的威胁,需要立即采取行动。”

机器学习安全

Google拥有修补了100多个安全错误自年初以来在Tensorflow上。它也出版了全面的安全指南在运行不受信任的模型,对未经信任的用户输入进行消毒,并在网络上安全地提供模型。beplay体育能用吗

Arjun说:“这些漏洞很容易找到,并且使用漏洞扫描仪可以提供帮助。”

“通常,有更好的安全性的替代方案。开发人员应尽可能使用它们。例如,使用unsafe_load()或者加载()使用默认的YAML加载器可以用安全替换safe_load()功能。如果没有更好的选择,则应对用户输入进行消毒。”


面试英国最繁忙的机场之一如何防御网络攻击