Python依赖库Numpy曝出远程代码执行漏洞

iso60001  2162天前

22.png

Python著名开源包NumPy的默认用法存在严重漏洞库,一旦被攻击者利用,可在受害者的机器上远程执行代码。

该漏洞于1月16日曝出,影响到NumPy版本1.10(2015年发布)到1.16(目前最新的版本,1月14日发布)。目前该依赖库的开发者正努力修复漏洞。

NumPy是在实现科学计算中最流行的python库之一。同时也是通用数据的多维容器,可与多个数据库交互。

函数默认值带来的危险

问题主要出现在“pickle”这个模块上,该模块的主要作用是将Python对象结构转换为可存储在磁盘或数据库中的格式,这样就可以通过网络传递。

安全研究员Sherwel Nan报告了这个问题。他表示,如果一个python程序通过“numpy.load”函数加载了恶意数据,攻击者就可以在受害者机器上远程执行代码。

默认情况下,可在npy文件中加载pickle处理后的对象数组。NumPy开发人员手册也清楚地提到了允许“pickles”所带来安全问题,“加载pickle处理后的数据可以执行任意代码。”但是,如果pickles被禁用,就无法再加载对象数组。

NumPy在版本1.10开始就引入了“allow_pickle”参数,开发团队也正在紧急修复。

Nan告诉BleepingComputer,当普通用户使用带有“allow_pickle”参数的“numpy.load”函数时,如果用户不能确定输入数据是否安全,则应将“allow_pickle”设置为“false”。

此外,该依赖库的维护人员还建议将Numpy 1.17中的“allow_pickle”参数的默认值更改为“false”,并在用户从网络导入数据集时发出警告,以便时刻提醒用户只有在完全信任输入数据的情况下能启用pickle。

严重等级:致命

NAN报告的这个漏洞现在被标记为CVE-2019-6446,并根据通用漏洞评分系统标记为严重,严重性评分为9.8/10。

该依赖库通常可以从基于Linux的操作系统的官方软件包中获得,尤其是企业版的软件包。SUSE安全工程师Alexandros Toptsoglou表示,该漏洞会影响SuSE Linux Enterprise 15和SuSE Linux Enterprise 12 Service Pack 2。

NumPy可被RPM包管理器(RPM)安装在的各种Linux发行版上。因此,NumPy RPM的维护人员很快发出了警告,如果你下载安装1.17版本,你就可以看到警告。

Sebastian Berger表示:“如果有人非常担心,我们可以讨论取消计划或加快行动,但这很大程度上取决于下游地区是否依赖于计划。”

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:https://www.bleepingcomputer.com/news/security/numpy-is-awaiting-fix-for-critical-remote-code-execution-bug/

最新评论

昵称
邮箱
提交评论