聚焦源代码安全,网罗国内外最新资讯!
编译:360代码卫士团队
NumPy库的当前版本默认使用不安全的Python模块,可导致受影响应用程序遭远程代码执行影响。
这个问题是在1月16日披露的,影响NumPy版本1.10(2015年发布)至1.16(1月14日发布,目前为止的最新版本)。目前开发人员正在着手推出补丁。
NumPy是科学计算中使用的最流行的Python库之一。它也是通用数据的多维容器,可与多个数据库集成。
默认设置存在风险
问题在于‘pickle’模块,它的作用是将Python对象结构转换为可存储在磁盘或数据库中的格式或转换为允许在网络中传输的格式。
报告该问题的安全研究员Sherwel Nan指出,如果Python应用程序通过‘numpy.load’函数加载恶意数据,那么攻击者能够在机器上执行远程代码。
在npy文件中加载pickled对象数组是默认操作。NumPy开发者手册中清楚地提到了允许‘pickles’的安全风险,“因为加载pickled数据可执行任意代码”。然而,如果不允许pickles,那么就无法加载对象数组。
‘allow_pickle’参数是在NumPy 1.10中引入的,目前开发团队正在着手解决这一问题。
Nan表示,使用带有‘allow_pickle’参数的‘numpy.load’函数时,如果不确定数据是否安全,那么用户应当默认将值设置为‘False’。
该项目的维护人员同时建议在NumPy 1.17中将‘allow_pickle’参数的默认值更改为‘False’,并从互联网导入数据集时展示警告信息,以便用户只有在信任数据时允许该操作。
CVSS 评分9.8
Nan提交的这个漏洞的编号是CVE-2019-6446,安全等级为“严重”,CVSS v3的评分为9.8(满分为10分)。
一般可从Linux发行版本的官方数据包库中获取该库,尤其是为企业使用的库。SUSE安全研究员Alexandros Toptsoglou表示该漏洞影响SUSE Linux企业版15和SUSE Linux企业版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/
领取专属 10元无门槛券
私享最新 技术干货