CVE-2023-41909

7.5 HIGH

📋 TL;DR

This vulnerability in FRRouting FRR allows remote attackers to cause a denial of service (crash) by sending specially crafted BGP flowspec requests with no attributes. The NULL pointer dereference in bgp_nlri_parse_flowspec leads to bgpd process termination. Organizations running FRR for BGP routing are affected.

💻 Affected Systems

Products:
  • FRRouting FRR
Versions: All versions through 9.0
Operating Systems: Linux distributions including Debian, Fedora, and others
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects systems with BGP flowspec feature enabled and configured to accept BGP updates from peers.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete disruption of BGP routing services, causing network outages and loss of connectivity for dependent systems.

🟠

Likely Case

Service disruption of the bgpd daemon, requiring manual restart and potentially causing temporary routing instability.

🟢

If Mitigated

Limited impact with proper network segmentation and monitoring, allowing quick detection and recovery.

🌐 Internet-Facing: HIGH - BGP peers are typically internet-facing, making exploitation trivial for attackers with BGP access.
🏢 Internal Only: MEDIUM - Internal BGP peers could exploit this, but requires network access to BGP ports.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires sending malformed BGP flowspec packets to vulnerable BGP peers, which is straightforward for attackers with BGP access.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Fixed in commit cfd04dcb3e689754a72507d086ba3b9709fc5ed8 and later versions

Vendor Advisory: https://github.com/FRRouting/frr/pull/13222/commits/cfd04dcb3e689754a72507d086ba3b9709fc5ed8

Restart Required: Yes

Instructions:

1. Update FRR to version 9.0.1 or later. 2. For Debian: apt update && apt upgrade frr. 3. For Fedora: dnf update frr. 4. Restart bgpd service: systemctl restart frr or systemctl restart bgpd.

🔧 Temporary Workarounds

Disable BGP flowspec

linux

Disable BGP flowspec feature if not required

router bgp <ASN>
no bgp flowspec

Restrict BGP peer access

linux

Use access lists to limit which peers can send BGP updates

ip prefix-list TRUSTED-PEERS permit <peer-ip>
router bgp <ASN>
neighbor <peer-ip> prefix-list TRUSTED-PEERS in

🧯 If You Can't Patch

  • Implement strict BGP peer filtering using prefix lists and route maps
  • Monitor bgpd process health and implement automatic restart on crash

🔍 How to Verify

Check if Vulnerable:

Check FRR version: frr --version. If version is 9.0 or earlier, system is vulnerable.

Check Version:

frr --version

Verify Fix Applied:

Verify FRR version is 9.0.1 or later: frr --version. Check bgpd process is running: systemctl status frr or ps aux | grep bgpd.

📡 Detection & Monitoring

Log Indicators:

  • bgpd process crashes in syslog
  • Segmentation fault messages in FRR logs
  • BGP session resets from unexpected peers

Network Indicators:

  • Unexpected BGP flowspec packets from untrusted sources
  • BGP session flaps with specific peers

SIEM Query:

source="frr.log" AND ("segmentation fault" OR "NULL pointer" OR "bgpd crashed")

🔗 References

📤 Share & Export