CVE-2020-8597: PPPD 远程代码执行漏洞通告
2020-03-06 19:10

报告编号:B6-2020-030602

报告来源:360-CERT

报告作者:360-CERT

更新日期:2020-03-06

0x01 漏洞背景

2020年03月06日,360CERT监测发现,国外安全研究员Ilja Van Sprundel(IOActive)发现 PPPD 程序中存在一枚缓冲区溢出漏洞。

该漏洞 CVSS 评分 9.8,影响软件版本跨度长达17年。攻击者可以通过特制的流量包,远程攻击开放 PPPD 服务的服务器。因为 PPPD 通常以root(unix最高权限)运行,攻击成功可完全取得服务器控制权限。

0x02 风险等级

360CERT对该漏洞进行评定

评定方式 等级
威胁等级 严重
影响面 广泛

Centos yum 包管理器中有如下软件依赖 ppp 服务

  • NetworkManager-l2tp
  • NetworkManager-ppp
  • NetworkManager-pptp
  • modem-manager-gui-cm-pppd
  • openfortivpn
  • pptp
  • pptpdrp-pppoe
  • trinity-kppp
  • wvdial
  • xl2tpd

360CERT建议广大用户及时更新 ppp 软件包版本。做好资产 自查/自检/预防 工作,以免遭受攻击。

0x03 补丁分析

./pppd.h:816:#define BCOPY(s, d, l)  memcpy(d, s, l)

pppd/eap.c:

由于之前已经验证vallen > len的条件是否成立,所以在判断vallen >= len+sizeof(rhostname)时肯定为false,进入else语句,此时如果len -vallen > sizeof(rhostname)就会在复制时造成rhostname数组溢出,所以补丁修复了判断条件。

0x04 影响版本

2.4.2 <= pppd <= 2.4.8

0x05 修复建议

ppp 软件尚未针对该漏洞发布新的 Release 版本

升级 ppp 至 8d7970b8f3db727fe798b65f3377fe6787575426 (git commit id)

debian 8 已发布 ppp 2.4.6-3.1+deb8u1 修复该漏洞

debian 9 已发布 ppp 2.4.7-1+4+deb9u1 修复该漏洞

debian 10 已发布 ppp 2.4.7-2+4.1+deb10u1 修复该漏洞

centos 已经发布 ppp 2.4.5-34 修复该漏洞

360CERT建议及时通过系统自带包管理器进行升级(yum, apt, pacman ...)

0x06 相关空间测绘数据

360安全大脑-Quake网络空间测绘系统通过对全网资产测绘,发现 ppp 服务在全球均有广泛使用,而境外使用尤其突出。具体分布如下图所示。

0x07 产品侧解决方案

360城市级网络安全监测服务

360安全大脑的QUAKE资产测绘平台通过资产测绘技术手段,对该类 漏洞/事件 进行监测,请用户联系相关产品区域负责人获取对应产品。

0x08 时间线

2020-02-03 NVD收录此漏洞

2020-03-05 外媒报道此漏洞

2020-03-06 360CERT发布预警

0x09 参考链接

  1. pppd: Fix bounds check in EAP code · pauzlusmack/ppp@8d7970b
  2. NVD - CVE-2020-8597
  3. Critical PPP Daemon Flaw Opens Most Linux Systems to Remote Hackers
  4. ppp-2.4.5-34.el7_7.x86_64.rpm CentOS 7 Download