2020年2月3日,pppd发布了更新补丁,修复了一个漏洞:CVE-2020-8597。深信服安全研究团队依据漏洞重要性和影响力进行筛选,作出漏洞通告。
漏洞名称:pppd远程代码执行漏洞CVE-2020-8597
威胁等级:高危
影响范围:ppp 2.4.2-2.4.8
漏洞类型:代码执行
利用难度:简单
1 PPP组件介绍
PPP是用于通过拨号调制解调器、DSL连接和许多其他类型的点对点链接建立互联网链接的协议。pppd软件还可以使用多个身份验证协议对网络连接的双方进行身份验证。
2漏洞分析
由于点对点协议守护程序(pppd)中可扩展身份验证协议(EAP)数据包处理过程中存在一个缓冲区溢出漏洞,导致攻击者可利用该漏洞在目标主机上面执行任意代码。
该漏洞存在于eap报文解析代码eap.c中的eap_request函数和eap_response函数:
static void eap_request(esp, inp, id, len)
static void eap_response(esp, inp, id, len)
这两个函数参数inp的第一个字节表示报文类型,如果类型为EAPT_MD5CHAP,则会检查传入数据的长度,此处代码的逻辑旨在确保嵌入数据的长度小于整个数据包的长度,此处的判断存在一处逻辑错误,这是导致代码出现漏洞的主要原因。在验证之后,在没验证rhostname合法性的前提条件下,会将rhostname这个变量的值复制到本地缓冲区中而不进行任何边界检查,这是该漏洞的第一处逻辑错误。
另一个逻辑错误存在于eap_input函数中,该函数不检查在链路控制协议(LCP)阶段是否协商了EAP。这允许未经身份验证的用户向pppd服务发送EAP数据包,即使ppp由于缺乏对EAP协议的支持或由于LCP阶段中商定的秘钥不匹配而导致身份验证失败,eap_input函数仍然会处理EAP数据包并触发缓冲区溢出。
pppd通常以root权限允许运行,攻击者可以利用该漏洞在目标主机以root权限执行任意代码。
影响范围
目前受影响的ppp版本:
2.4.2-2.4.8
解决方案
检测方式
使用如下命令检测当前pppd版本:
pppd --version
若检测当前版本在受影响范围内,则存在上述安全风险。
1修复建议
补丁链接:
https://github.com/paulusmack/ppp/commit/8d7970b8f3db727fe798b65f3377fe6787575426
时间轴
2020/2/3
官方发布漏洞修复补丁。
2020/3/6
深信服千里目安全实验室发布漏洞分析文章。
点击阅读原文,及时关注深信服智安全Wiki平台查询漏洞的信息(需登录)~
原文始发于微信公众号(深信服千里目安全实验室):CVE-2020-8597|pppd远程代码执行漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论