pppd软件包中的一个漏洞刚刚向公众披露 (CVE-2020-8597) 这会严重影响某些VPN服务,DSL连接以及以太网 因为发现的错误允许执行代码将特殊设计的身份验证请求发送到使用PPP(点对点协议)或PPPoE(以太网PPP)的系统。
就像我们提到的那样, 各种提供商经常使用这些协议 通过以太网或DSL建立连接,并且还用于某些VPN中,例如pptpd和openfortivpn。
为了测试系统对问题的敏感性, 准备了漏洞利用原型 已经 它对公众开放。
关于裁决
该漏洞是由缓冲区溢出引起的 在可扩展身份验证协议(EAP)实施中。
另一个逻辑缺陷导致eap_input()函数无法检查在线路控制协议(LCP)阶段是否协商了EAP。
这允许未经身份验证的攻击者发送EAP数据包 即使ppp由于缺乏EAP支持或由于LCP阶段同意的预共享密码短语不匹配而拒绝了身份验证协商。
eap_input中易受攻击的pppd代码将继续处理EAP数据包并触发堆栈缓冲区溢出。
未知大小的未经验证的数据可用于破坏目标系统的内存。 pppd通常以高特权(系统或根)运行,并与内核驱动程序结合使用。 这使攻击者有可能以root或系统级特权运行任意代码。
有了这个, 可以在认证之前的阶段进行攻击 通过发送类型为EAPT_MD5CHAP的数据包进行传递,其中包括一个非常长的主机名,该主机名不适合分配的缓冲区。
由于代码中存在一个错误,无法检查rhostname字段的大小, 攻击者可以覆盖缓冲区外部的数据 在堆栈上,并以root权限实现代码的远程执行。
该漏洞在服务器和客户端上均已显示,即不仅服务器可以受到攻击,而且客户端尝试连接到由攻击者控制的服务器(例如,攻击者可以首先通过漏洞对服务器进行黑客攻击,然后再开始攻击受攻击的客户端)连接)。
脆弱性 也影响了lwIP堆栈, 但是在lwIP的默认设置中未启用EAP支持。
受影响的版本和解决方案
因此,检测到此故障 影响pppd版本2.4.2至2.4.8 包含在内,并且以补丁的形式解决。 你们中的有些人可能知道,向公众公开的错误是在发现之后和解决问题之后很久才发生的。 并且,尽管这花费了整个过程,但是仍然有一部分用户必须执行相应的更新。
问题解决状态可以查看 在主要Linux发行版的报告中。
这可以在 这些页面: Debian, Ubuntu, RHEL,Fedora, SUSE, OpenWRT的, 拱,NetBSD。
在RHEL,OpenWRT和SUSE上,pppd软件包的编译包含“ Stack Smashing Protection”(-fstack-保护器»在gcc中),这限制了锁定操作。
除了发行版,该漏洞还在某些Cisco(CallManager),TP-LINK和Synology产品(DiskStation Manager,VisualStation VS960HD和Router Manager)中使用pppd或lwIP代码得到了确认。
因此,该补丁已可用 在大多数Linux发行版的存储库中,有些已经通过提供软件包更新来实现它。
如果您想了解更多 关于找到的故障,您可以检查详细信息和更多信息 在下面的链接中。