# CVE-2026-129217: bgpd: out-of-bounds heap read and crash on NOTIFICATION Cease/Hard Reset with one data byte

Status: published. Published: 2026-11-13. Updated: 2026-11-13.

In FRRouting (FRR) 8.3 through 10.5.1, bgp_notify_decapsulate_hard_reset() in bgpd/bgp_packet.c does not validate the length of the data field of a received BGP NOTIFICATION Cease/Hard Reset message (RFC 8538). When the data field is exactly one byte long, the function reads one byte past the end of a heap buffer and the 16-bit length of the encapsulated data underflows to 65535, causing a 65535-byte out-of-bounds heap read followed by an assertion failure. A remote BGP peer that has established a session and negotiated the Graceful Restart capability with the Notification (N) bit can send such a message to crash the bgpd daemon, terminating all BGP sessions (denial of service). This is fixed in 10.0.5, 10.1.5, 10.2.6, 10.3.4, 10.4.3, 10.5.2 and 10.6.0.

## Remediation

- fix: Upgrade to a fixed version of FRRouting (source: CNA: NetDEF)
- workaround: Graceful Restart Capability needs to be enabled. Disable the Capability with "no bgp graceful-restart notification" or "bgp graceful-restart-disable" (source: CNA: NetDEF)
- fix: The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches. (source: CNA: NetDEF) — https://github.com/FRRouting/frr/pull/20796

## Affected products and versions

- FRRouting / FRRouting: ≥ 10.5.0; < 10.5.2 (affected, semver); ≥ 10.4.0; < 10.4.3 (affected, semver); ≥ 10.3; < 10.3.4 (affected, custom); ≥ 10.2; < 10.2.6 (affected, custom); ≥ 10.1; < 10.1.5 (affected, custom); ≥ 8.3; < 10.0.5 (affected, custom); ≥ 0; < 8.3 (unaffected, custom). Source: CNA: NetDEF

## Severity and prioritization

- CVSS 4.0: 6 (medium); CVSS:4.0/AV:N/AC:H/AT:P/PR:H/UI:N/VC:L/VI:H/VA:H/SC:N/SI:N/SA:N; source: CNA: NetDEF

- CISA KEV: No listing in collected sources

- EPSS: Not available

- SSVC: Not available

- Weaknesses: CWE-125, CWE-191

## Exploit evidence

No exploit evidence in collected sources. This is not proof of no exploitation.

## References

- https://github.com/FRRouting/frr/issues/20793 (CNA: NetDEF; issue-tracking)

- https://github.com/FRRouting/frr/pull/20796 (CNA: NetDEF; patch)

## Provenance

- CNA: NetDEF: https://www.cve.org/CVERecord?id=CVE-2026-129217; retrieved 2026-11-13; source updated 2026-11-13

Revision: 7c8091b6f82a779afbc5092db0f437600aa82fbf0c167fa82f469a0ab2614ac7

Canonical: https://y2.dev/cve/CVE-2026-129217

## Agent and API access

Public CVE pages, Markdown, and JSON are free to read without an account or API key.

- Public catalog: https://y2.dev/cve/index.json. Follow nextCursor with the same search, filters, sort, and limit (1–100). A null cursor marks the end.

- WebMCP: search_cve_disclosures, get_cve_disclosure, get_cve_page_markdown, get_y2_cve_access. Available in compatible browsers.

- Cyber API: https://api.y2.dev/api/v2/cyber/cves and https://api.y2.dev/api/v2/cyber/cves/{cveId}.

- Y2 Pro or Elite: create a workspace API key with the intel:cyber scope and send Authorization: Bearer <Y2_API_KEY>. Setup: https://y2.dev/docs/api/create-key.

- x402: Pay per request without an account or API key. Omit Authorization, read the HTTP 402 PAYMENT-REQUIRED challenge, validate its current requirements, and retry with PAYMENT-SIGNATURE through an authorized payment client. These browser tools never make payments. Guide: https://y2.dev/docs/api/x402.

- OpenAPI: https://y2.dev/api/openapi.yaml. Agent access metadata: https://y2.dev/cve/agent.json.

Collected public records only. Check source status for coverage and freshness.