DPDK vhost多个安全漏洞通告

  • A+
所属分类:安全漏洞

0x00 漏洞概述

数据平面开发套件DPDK是由6WIND和Intel等多家公司开发,主要基于Linux系统运行,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,并提高数据平面应用程序的工作效率。

2020年09月28日,DPDK开发团队发布了DPDK vhost多个高危漏洞的安全通告。其中包括远程代码执行漏洞、缓冲区溢出漏洞和拒绝服务漏洞等。

 

0x01 漏洞详情

 

DPDK vhost多个安全漏洞通告

此次发布的DPDK vhost安全漏洞如下:

 

漏洞编号

漏洞类型

严重程度

评分

CVE-2020-14374

远程代码执行

8.8

CVE-2020-14375

缓冲区溢出

7.8

CVE-2020-14376

缓冲区溢出

7.8

CVE-2020-14377

缓冲区溢出

7.1

CVE-2020-14378

拒绝服务

3.3

 

影响范围

l  dpdk:<18.11.10

l  dpdk:<19.11.5

 

漏洞详情

DPDK vhost代码执行漏洞(CVE-2020-14374)

该漏洞是由于copy_data函数中的边界检查不正确导致缓冲区溢出。攻击者可以利用缓冲区溢出在vhost_crypto应用程序中的任何地址写入任意数据。

成功利用该漏洞的攻击者可以在vhost_crypto进程中执行远程代码,并可导致虚拟机逃逸。

Bugzilla链接:https://bugs.dpdk.org/show_bug.cgi?id=272

 

DPDK vhost缓冲区溢出漏洞(CVE-2020-14375)

该漏洞是由于DPDK vhost_crypto.c中Virtio Ring描述符及内存区域中的数据可以被虚拟机和主机访问。攻击者通告修改该内存区域的内容,可造成缓冲区溢出。并且当满足漏洞CVE-2020-14374的情况时可造成代码执行。

Bugzilla链接:https://bugs.dpdk.org/show_bug.cgi?id=272

 

DPDK vhost缓冲区溢出漏洞(CVE-2020-14376)

DPDK vhost_crypto.c在从虚拟机内存复制 iv_data 数据到主机时,缺少边界检查内存可能导致缓冲区溢出。

攻击者通过控制cipher->para.iv_len 参数,最多可以复制4G数据到 iv_data 的缓冲区,可造成缓冲区溢出,并在特定条件下导致代码执行。

 Bugzilla链接:https://bugs.dpdk.org/show_bug.cgi?id=272

 

DPDK vhost缓冲区溢出漏洞(CVE-2020-14377)

DPDK vhost_crypto.c中缺乏对 cipher->para.dst_data_len 的校验。攻击者通过控制该参数,可以造成缓冲区越界读取。

该漏洞可以将大量的主机内存内容读取到虚拟机内存中,并且可以与漏洞CVE-2020-14374 结合使用,可导致vhost_crypto进程数据被任意读取。

Bugzilla链接:https://bugs.dpdk.org/show_bug.cgi?id=272

 

DPDK vhost拒绝服务漏洞(CVE-2020-14378)

DPDK vhost_crypto.c中,move_desc函数中的整数下溢会导致许多cpu周期被长时间运行的循环所吞噬。攻击者最多能导致move_desc陷入4,294,967,295迭代循环中。同时根据使用vhost_crypto的方式,这可能会影响其他虚拟环境或DPDK lcore执行效率。

成功利用此漏洞的攻击者可造成拒绝服务。

Bugzilla链接:https://bugs.dpdk.org/show_bug.cgi?id=272

 

0x02处置建议


建议升级至DPDK最新版本。

下载链接:

https://fast.dpdk.org/rel/dpdk-19.11.5.tar.xz

http://fast.dpdk.org/rel/dpdk-18.11.10.tar.xz

 

0x03 参考链接


https://seclists.org/oss-sec/2020/q3/200

https://bugs.dpdk.org/show_bug.cgi?id=272

 

0x04 时间线


2020-09-28 DPDK发布安全公告

2020-09-29 VSRC发布安全通告

 

0x05 附录

 

CVSS评分标准官网:http://www.first.org/cvss/

 


发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: