When a specific BGP flowspec configuration is enabled and upon receipt of a specific matching BGP packet meeting a specific term in the flowspec configuration, a reachable assertion failure occurs, causing the routing protocol daemon (rpd) process to crash with a core file being generated. Affected releases are Juniper Networks Junos OS: 12.1X46 versions prior to 12.1X46-D77 on SRX Series; 12.3 versions prior to 12.3R12-S10; 12.3X48 versions prior to 12.3X48-D70 on SRX Series; 14.1X53 versions prior to 14.1X53-D47 on EX2200/VC, EX3200, EX3300/VC, EX4200, EX4300, EX4550/VC, EX4600, EX6200, EX8200/VC (XRE), QFX3500, QFX3600, QFX5100; 15.1 versions prior to 15.1R3; 15.1F versions prior to 15.1F3; 15.1X49 versions prior to 15.1X49-D140 on SRX Series; 15.1X53 versions prior to 15.1X53-D59 on EX2300/EX3400.
The product contains an assert() or similar statement that can be triggered by an attacker, which leads to an application exit or other behavior that is more severe than necessary.
| Name | Vendor | Start Version | End Version |
|---|---|---|---|
| Junos | Juniper | 12.1x46 (including) | 12.1x46 (including) |
| Junos | Juniper | 12.1x46-d10 (including) | 12.1x46-d10 (including) |
| Junos | Juniper | 12.1x46-d15 (including) | 12.1x46-d15 (including) |
| Junos | Juniper | 12.1x46-d20 (including) | 12.1x46-d20 (including) |
| Junos | Juniper | 12.1x46-d25 (including) | 12.1x46-d25 (including) |
| Junos | Juniper | 12.1x46-d30 (including) | 12.1x46-d30 (including) |
| Junos | Juniper | 12.1x46-d35 (including) | 12.1x46-d35 (including) |
| Junos | Juniper | 12.1x46-d40 (including) | 12.1x46-d40 (including) |
| Junos | Juniper | 12.1x46-d45 (including) | 12.1x46-d45 (including) |
| Junos | Juniper | 12.1x46-d50 (including) | 12.1x46-d50 (including) |
| Junos | Juniper | 12.1x46-d55 (including) | 12.1x46-d55 (including) |
| Junos | Juniper | 12.1x46-d60 (including) | 12.1x46-d60 (including) |
While assertion is good for catching logic errors and reducing the chances of reaching more serious vulnerability conditions, it can still lead to a denial of service. For example, if a server handles multiple simultaneous connections, and an assert() occurs in one single connection that causes all other connections to be dropped, this is a reachable assertion that leads to a denial of service.