CVE-2024-39554

Junos OS and Junos OS Evolved: BGP multipath incremental calculation is resulting in an rpd crash

MEDIUM
5.9
CVSS Score
Published: July 10, 2024 at 10:32 PM UTC
Updated: June 17, 2026 at 07:42 AM UTC
3 products affected across 2 vendorsJunosJunos OS EvolvedJunos OS Evolved

Using Junos OS by Juniper Networks?

Get instant alerts when new vulnerabilities affect Junos OS - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
MEDIUM5.9
Exploit prediction
EPSS 0.4%
SSVC
No known exploit

Description

A Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition') vulnerability the Routing Protocol Daemon (rpd) of Juniper Networks Junos OS and Juniper Networks Junos OS Evolved allows an unauthenticated, network-based attacker to inject incremental routing updates when BGP multipath is enabled, causing rpd to crash and restart, resulting in a Denial of Service (DoS). Since this is a timing issue (race condition), the successful exploitation of this vulnerability is outside the attacker's control.  However, continued receipt and processing of this packet may create a sustained Denial of Service (DoS) condition. On all Junos OS and Junos OS Evolved platforms with BGP multipath enabled, a specific multipath calculation removes the original next hop from the multipath lead routes nexthop-set. When this change happens, multipath relies on certain internal timing to record the update.  Under certain circumstance and with specific timing, this could result in an rpd crash. This issue only affects systems with BGP multipath enabled. This issue affects: Junos OS: * All versions of 21.1 * from 21.2 before 21.2R3-S7, * from 21.4 before 21.4R3-S6, * from 22.1 before 22.1R3-S5, * from 22.2 before 22.2R3-S3, * from 22.3 before 22.3R3-S2, * from 22.4 before 22.4R3, * from 23.2 before 23.2R2. Junos OS Evolved: * All versions of 21.1-EVO, * All versions of 21.2-EVO, * from 21.4-EVO before 21.4R3-S6-EVO, * from 22.1-EVO before 22.1R3-S5-EVO, * from 22.2-EVO before 22.2R3-S3-EVO, * from 22.3-EVO before 22.3R3-S2-EVO, * from 22.4-EVO before 22.4R3-EVO, * from 23.2-EVO before 23.2R2-EVO. Versions of Junos OS before 21.1R1 are unaffected by this vulnerability. Versions of Junos OS Evolved before 21.1R1-EVO are unaffected by this vulnerability.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

v < 21.1r1-evo21.1 ≤ v < 21.321.1-evo ≤ v < 21.1*-evo21.2-evo ≤ v < 21.2*-evo21.4-evo ≤ v < 21.4r3-s6-evo22.1-evo ≤ v < 22.1r3-s5-evo22.2-evo ≤ v < 22.2r3-s3-evo22.3-evo ≤ v < 22.3r3-s2-evo22.4-evo ≤ v < 22.4r3-evo23.2-evo ≤ v < 23.2r2-evo21.1-evo21.2-evo21.421.4 r121.4 r1-s121.4 r1-s221.4 r221.4 r2-s121.4 r2-s221.4 r321.4 r3-s121.4 r3-s221.4 r3-s321.4 r3-s421.4 r3-s521.4-evo22.122.1 r122.1 r1-s122.1 r1-s222.1 r222.1 r2-s122.1 r322.1 r3-s122.1 r3-s222.1 r3-s322.1 r3-s422.1-evo22.222.2 r122.2 r1-s122.2 r1-s222.2 r222.2 r2-s122.2 r2-s222.2 r322.2 r3-s122.2 r3-s222.2-evo22.322.3 r122.3 r1-s122.3 r1-s222.3 r222.3 r2-s122.3 r2-s222.3 r322.3 r3-s122.3-evo22.422.4 r122.4 r1-s122.4 r1-s222.4 r222.4 r2-s122.4 r2-s222.4-evo23.223.2 r123.2 r1-s123.2 r1-s223.2-evo
Affected range stops below 21.1*-evo, so it looks safe — our inference, not a vendor statement
Affected range stops below 21.1r1-evo, so it looks safe — our inference, not a vendor statement
Affected range stops below 21.2*-evo, so it looks safe — our inference, not a vendor statement
Affected range stops below 21.3, so it looks safe — our inference, not a vendor statement
Affected range stops below 21.4r3-s6-evo, so it looks safe — our inference, not a vendor statement
Affected range stops below 22.1r3-s5-evo, so it looks safe — our inference, not a vendor statement
Affected range stops below 22.2r3-s3-evo, so it looks safe — our inference, not a vendor statement
Affected range stops below 22.3r3-s2-evo, so it looks safe — our inference, not a vendor statement
Affected range stops below 22.4r3-evo, so it looks safe — our inference, not a vendor statement
Affected range stops below 23.2r2-evo, so it looks safe — our inference, not a vendor statement
Affected range stops below 21.1*, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 21.1R1 (unaffected)
Affected range stops below 21.2, so it looks safe — our inference, not a vendor statement
Affected range stops below 21.2R3-S7, so it looks safe — our inference, not a vendor statement
Affected range stops below 21.4R3-S6, so it looks safe — our inference, not a vendor statement
Affected range stops below 22.1R3-S5, so it looks safe — our inference, not a vendor statement
Affected range stops below 22.2R3-S3, so it looks safe — our inference, not a vendor statement
Affected range stops below 22.3R3-S2, so it looks safe — our inference, not a vendor statement
Affected range stops below 22.4R3, so it looks safe — our inference, not a vendor statement
Affected range stops below 23.2R2, so it looks safe — our inference, not a vendor statement
21.1-EVO ≤ v < 21.1*-EVO21.2-EVO ≤ v < 21.2*-EVO21.4-EVO ≤ v < 21.4R3-S6-EVO22.1-EVO ≤ v < 22.1R3-S5-EVO22.2-EVO ≤ v < 22.2R3-S3-EVO22.3-EVO ≤ v < 22.3R3-S2-EVO22.4-EVO ≤ v < 22.4R3-EVO23.2-EVO ≤ v < 23.2R2-EVO21.1-EVO21.2-EVO21.4-EVO22.1-EVO22.2-EVO22.3-EVO22.4-EVO23.2-EVO
Affected range stops below 21.1*-EVO, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 21.1R1-EVO (unaffected)
Affected range stops below 21.2*-EVO, so it looks safe — our inference, not a vendor statement
Affected range stops below 21.4R3-S6-EVO, so it looks safe — our inference, not a vendor statement
Affected range stops below 22.1R3-S5-EVO, so it looks safe — our inference, not a vendor statement
Affected range stops below 22.2R3-S3-EVO, so it looks safe — our inference, not a vendor statement
Affected range stops below 22.3R3-S2-EVO, so it looks safe — our inference, not a vendor statement
Affected range stops below 22.4R3-EVO, so it looks safe — our inference, not a vendor statement
Affected range stops below 23.2R2-EVO, so it looks safe — our inference, not a vendor statement

Remediation

No guide yet

No remediation guidance has been written for this CVE yet. What the record does show:

Patch and advisory references

SSVC — Action Prioritization

SSVCNo known exploitNot automatableTotal impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

5.9MEDIUMjuniper
Attack Vector
NETWORK
Complexity
HIGH
Privileges
NONE
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
NONE
Integrity
NONE
Availability
HIGH
Vector?

Quick Info

StatusANALYZED
CWE
CWE-362

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card