PPPoE协议漏洞分析

前言

PPPoE 的全称是 Point-to-Point Protocol over Ethernet(以太网上的点对点协议) ,它是一种在 以太网(比如家庭局域网)上建立拨号连接 的协议,主要用于 宽带上网连接(特别是 ADSL)PPPoE也叫宽带拨号上网,拨号宽带接入是当前最广泛的宽带接入方式,运营商分配宽带用户名和密码,通过用户名和密码进行用户身份认证。如果电脑与宽带直接连接,需要在电脑上进行宽带PPPoE拨号才可以上网。简而言之,PPPoE拨号是使用宽带账号、密码进行拨号的上网方式。


🔧 简单理解:

PPPoE 就是你用 用户名+密码拨号上网 的方式,在以太网中实现互联网连接的技术。


🧱 结构说明:

PPPoE 是把 PPP 协议(原本用于电话线拨号) 封装在 以太网帧 中,让传统拨号方式可以应用在现代以太网中。

它结合了两个协议的优点:

  • 📞 PPP :支持认证(如 PAP/CHAP)、压缩、加密等

  • 🌐 Ethernet :局域网广泛使用的网络协议


📦 工作流程:

  1. 发现阶段(Discovery)

客户端广播寻找 PPPoE 服务器(PPPoE Access Concentrator)

  1. 会话阶段(Session)

成功建立后,客户端输入用户名密码(PAP 或 CHAP)完成认证,开始传输数据


🌍 应用场景:

应用场景 说明
家庭宽带(尤其是 ADSL) 早期用户必须“拨号上网”,这就是 PPPoE
路由器中的“宽带拨号” 路由器用 PPPoE 模式连接 ISP,需填写账号密码
企业防火墙 / 接入网关 控制用户身份、限速、限带宽

💬 举个例子:

如果你家以前用过拨号上网(比如中国电信),在电脑或路由器里填过类似这种信息:

  • 用户名:123456@telecom

  • 密码:abc123

那么你就是在用 PPPoE 拨号上网


1. CVE-2024-20327

漏洞描述:

用于 Cisco ASR 9000 系列聚合服务路由器的 Cisco IOS XR 软件的以太网 PPP 终止 (PPPoE) 终止功能中存在一个漏洞,该漏洞可能允许未经身份验证的相邻攻击者使 ppp_ma 进程崩溃,从而导致拒绝服务 (DoS) 情况。此漏洞是由于在基于 Lightspeed 或基于 Lightspeed-Plus 的线卡上运行宽带网络网关 (BNG) 功能和 PPPoE 终端的路由器上接收的格式错误的 PPPoE 数据包处理不当造成的。攻击者可以通过将构建的 PPPoE 数据包发送到不终止 PPPoE 的受影响线卡接口来利用此漏洞。成功利用此漏洞可允许攻击者使 ppp_ma 进程崩溃,从而导致路由器上的 PPPoE 通信出现 DoS 条件。

漏洞类型:

CWE-20: Improper Input Validation

Cisco官方通报

描述:

不正确的输入验证,产品接受输入或数据,但它不会验证或错误地验证输入是否具有安全正确地处理数据所需的属性。

Diagram for CWE-20

2. CVE-2023-28224

漏洞描述:

Windows以太网点对点协议(PPPoE)远程代码执行漏洞。

漏洞类型:

CWE-591: Sensitive Data Storage in Improperly Locked Memory

描述:

敏感数据存储在未正确锁定的内存中,该产品将敏感数据存储在未锁定或已错误锁定的内存中,这可能会导致虚拟内存管理器将内存写入磁盘上的交换文件。这可以使外部参与者更容易访问数据。

在Windows系统上,VirtualLock函数可以锁定内存页,以确保它保留在内存中并且不会交换到磁盘。但是,在旧版本的Windows(如95、98或Me)上,VirtualLock()函数只是一个存根,不提供任何保护。在POSIX系统上,mlock()调用可确保页面驻留在内存中,但不能保证该页面不会出现在交换中。因此,它不适用作敏感数据的保护机制。某些平台(尤其是Linux)确实保证页面不会被交换,但这是非标准的,不可移植。对mlock()的调用也需要supervisor权限。必须检查这两个调用的返回值,以确保锁定操作实际成功。

VirtualLock 函数是 Windows API 中的一个内存管理函数,其作用是将指定的虚拟内存页锁定在物理内存中,防止其被分页到磁盘(即防止换出到页面文件)


✅ 函数原型(C/C++)

>BOOL VirtualLock(
LPVOID lpAddress, // 起始地址
SIZE_T dwSize // 要锁定的内存区域大小(以字节为单位)
>);

🔍 功能详解

  • Windows 操作系统使用虚拟内存管理机制,程序使用的内存页可能在不活跃时被操作系统换出到磁盘(分页文件)。

  • VirtualLock 可以强制将特定内存页保留在物理内存中,确保这些数据在访问时不会因分页而导致性能下降或数据泄露风险。

3. CVE-2023-23385

漏洞描述:

Windows 以太网点对点协议 (PPPoE) 特权提升漏洞。

漏洞类型:

CWE-190: Integer Overflow or Wraparound

描述:

整数溢出或环绕,当logic假定结果值始终大于原始值时,product执行的计算可能会产生整数溢出或环绕。当整数值递增到太大而无法存储在关联表示中的值时,会发生这种情况。发生这种情况时,该值可能会变成一个非常小的数字或负数。

img