原创 360CERT [三六零CERT](javascript:void(0)???? 今天

DPDK 多个高危漏洞通告_缓冲区溢出

报告编号:B6-2020-092901

报告作者:360CERT

更新日期:2020-09-29

0x01 事件简述

2020年09月29日,360CERT监测发现 ​​DPDK​​​ 发布了 ​​DPDK vhost 多个高危漏洞​​​ 的风险通告,漏洞编号包含 ​​CVE-2020-14374 等​​​ ,事件等级:​​高危​​​,事件评分:​​8.8​​。

DPDK vhost 组件中存在多处漏洞,最严重的为一处为 ​​代码执行漏洞​​(并能够造成虚拟环境逃逸)。

使用 vhost 组件的用户应当立即升级版本

对此,360CERT建议广大用户及时将 ​​DPDK​​ 升级到最新版本。与此同时,请做好资产自查以及预防工作,以免遭受黑客攻击。

0x02 风险等级

360CERT对该事件的评定结果如下

评定方式

等级

威胁等级

高危

影响面

广泛

360CERT评分

8.8

0x03 事件详情

CVE-2020-14374: 代码执行漏洞

DPDK ​​vhost_crypto.c​​​ 中 ​​copy_data​​ 函数的边界检查不正确,导致一处缓冲区溢出漏洞。

虚拟环境中的攻击者通过利用该缓冲区溢出漏洞来复写任意数据到 vhost_crypto应用程序中的任何地址,造成​​代码执行​​。

该漏洞可用于在vhost_crypto进程中执行代码,并造成虚拟环境逃逸。

CVE-2020-14375: 缓冲区/栈溢出漏洞

DPDK ​​vhost_crypto.c​​ 中 Virtio Ring描述符及内存区域中的数据可以被虚拟机和主机访问。

虚拟环境中的攻击者通过在 vhost_crypto.c 相关功能验证后修改该内存区域内容,可造成 ​​缓冲区溢出​​​。并且当满足 ​​CVE-2020-14374​​​ 的情况时可造成​​代码执行​​。

CVE-2020-14376: 缓冲区/栈溢出漏洞

DPDK ​​vhost_crypto.c​​​ 在从虚拟环境复制 ​​iv_data​​ 数据时,存在一处缓冲区溢出漏洞。

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

CVE-2020-14377: 缓冲区/栈溢出漏洞

DPDK ​​vhost_crypto.c​​​ 中缺乏对 ​​cipher->para.dst_data_len​​ 的校验。导致存在一处缓冲区越界读取漏洞。

虚拟环境中的攻击者通过控制该参数,可以造成 ​​缓冲区越界读取​​。

该漏洞可以将大量的主机内存内容读取到虚拟环境中,可以与 ​​CVE-2020-14374​​​ 结合,读取任意 ​​vhost_crypto​​ 进程的数据。

CVE-2020-14378: 拒绝服务漏洞

DPDK ​​vhost_crypto.c​​​ 中 ​​move_desc​​函数存在一处整数溢会漏洞。

虚拟环境中的攻击者通过触发该漏洞,可造成 ​​拒绝服务​​。

该漏洞导致执行长时间运行的循环。最多可以使​​move_desc​​​函数陷入 ​​4,294,967,295​​ 次迭代循环中。同时根据使用vhost_crypto的方式,这可能会影响其他虚拟环境或DPDK lcore执行效率。

0x04 影响版本

- ​​dpdk:dpdk​​: <18.11.10

- ​​dpdk:dpdk​​: <19.11.5

0x05 修复建议

通用修补建议

升级到 DPDK 最新版本

DPDK 18.11.10 (LTS)

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

DPDK 19.11.5 (LTS)

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

0x06 产品侧解决方案

360安全分析响应平台

360安全大脑的安全分析响应平台通过网络流量检测、多传感器数据融合关联分析手段,对该类漏洞的利用进行实时检测和阻断,请用户联系相关产品区域负责人或(shaoyulong#360.cn)获取对应产品。

DPDK 多个高危漏洞通告_数据_02

0x07 时间线

2020-09-28  @Ryan Hall 披露部分漏洞详情2020-09-29  360CERT发布通告