A Cisco device running IOS Border Gateway Protocol (BGP) is vulnerable to a Denial of Service (DoS) attack from a malformed BGP packet. Only devices with either the command bgp log-neighbor-changes configured or the command snmp-server enable traps bgp are vulnerable. The BGP protocol is not enabled by default, and must be configured in order to accept traffic from an explicitly defined peer. Unless the malicious traffic appears to be sourced from a configured, trusted peer, it would be difficult to inject a malformed packet. Cisco has made free software available to address this problem. This issue is tracked by CERT/CC VU#689326. This advisory will be posted at http://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20050126-bgp.
A Cisco device running IOS Border Gateway Protocol (BGP) is vulnerable to a Denial of Service (DoS) attack from a malformed BGP packet. Only devices with either the command bgp log-neighbor-changes configured or the command snmp-server enable traps bgp are vulnerable. The BGP protocol is not enabled by default, and must be configured in order to accept traffic from an explicitly defined peer. Unless the malicious traffic appears to be sourced from a configured, trusted peer, it would be difficult to inject a malformed packet.
Cisco has made free software available to address this problem.
This issue is tracked by CERT/CC VU#689326.
This advisory will be posted at http://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20050126-bgp.
This section provides details on affected products.
This vulnerability is present in any unfixed version of Cisco IOS, from the beginning of support for the BGP protocol, including versions 9.x, 10.x, 11.x and 12.x. This issue affects all Cisco devices configured for BGP routing and configured with either the bgp log-neighbor-changes command or snmp-server enable traps bgp. The bgp log-neighbor-changes command is on by default in 12.0(22)S, 12.0(11)ST, 12.1(10)E, 12.1(10) and later software.
Cisco IOS XR is also affected.
A router that is running the BGP process will have the following line in the configuration:
router bgp <AS number>
In order for the device to be impacted, one or both of the following configuration commands must be enabled:
bgp log-neighbor-changes
or
snmp-server enable traps bgp
To determine the software running on a Cisco product, log in to the device and issue the show version command to display the system banner. Cisco IOS software will identify itself as "Internetwork Operating System Software" or simply "IOS ®." On the next line of output, the image name will be displayed between parentheses, followed by "Version" and the IOS release name. Other Cisco devices will not have the show version command or will give different output.
The following example identifies a Cisco product running IOS release 12.0(3) with an installed image name of C2500-IS-L:
Cisco Internetwork Operating System Software IOS (TM) 2500 Software (C2500-IS-L), Version 12.0(3), RELEASE SOFTWARE
The release train label is "12.0."
The next example shows a product running IOS release 12.0(2a)T1 with an image name of C2600-JS-MZ:
Cisco Internetwork Operating System Software IOS (tm) C2600 Software (C2600-JS-MZ), Version 12.0(2a)T1, RELEASE SOFTWARE (fc1)
Additional information about Cisco IOS release naming can be found at: http://www.cisco.com/warp/public/620/1.html.
Products confirmed not to be vulnerable include devices that do not run Cisco IOS, such as the Cisco Guard, products that cannot participate in BGP or products that cannot be configured for BGP. No other Cisco products are currently known to be affected by this vulnerability.
The Border Gateway Protocol (BGP) is a routing protocol defined by RFC 1771, and designed to manage IP routing in large networks. An affected Cisco device running a vulnerable version of Cisco IOS software with the BGP protocol enabled will reload if a malformed BGP packet is already queued on the interface when a BGP neighbor change is logged. The device is not vulnerable unless either bgp log-neighbor-changes is configured or snmp-server traps enable bgp is configured.
Malformed packets can not only come from malicious sources. A valid peering device such as another BGP speaking router that produces the specific malformed packet in error can trigger this behavior.
In all cases, however, the packets must be sourced from an IP address that is explicitly configured.
BGP runs over the Transport Control Protocol (TCP), a reliable transport protocol which requires a valid three way handshake before any further messages will be accepted. The Cisco IOS implementation of BGP requires the explicit definition of a neighbor before a connection can be established, and traffic must appear to come from that neighbor. These implementation details make it very difficult to maliciously send a BGP packet to a Cisco IOS device from an unauthorized source.
This bug may also be triggered by other means which are not considered remotely exploitable. The use of the commands show ip bgp neighbors or debug ip bgp can cause a router to reload if the device has previously received a malformed packet.
Additionally, using an SNMP management station to poll the SNMP Object Identifier (OID) bgpPeerEntry.bgpPeerLastError (1.3.6.1.2.1.15.3.1.14) may cause the device to reset. This may only happen after the device has received the malformed packet and the BGP session is reset.
A Cisco IOS device receiving an invalid BGP packet will reset and may take several minutes to become fully functional. This vulnerability may be exploited repeatedly resulting in an extended DoS attack. This issue is documented in bug ID CSCee67450 ( registered customers only) .
A Cisco IOS XR device will restart the BGP process. All the sessions will be dropped and BGP process will have to re-establish sessions with its peers. No other routing protocols will be affected.
If graceful restart is enabled, forwarding should not be impacted.
In IOS XR, the BGP process is not mandatory by default. Unless the user has explicitly configured the BGP process to be mandatory, the IOS XR device will not reload.
The effectiveness of any workaround is dependent on specific customer situations such as product mix, network topology, traffic behavior, and organizational mission. Due to the variety of affected products and releases, customers should consult with their service provider or support organization to ensure any applied workaround is the most appropriate for use in the intended network before it is deployed.
The use of networking best practices techniques can greatly reduce the probability of a network infrastructure attack. Best practices that may reduce risk in this case include:
Under normal circumstances, due to inherent security factors in the TCP protocol, such as sequence number checks, it is difficult, but possible to forge an appropriate packet to exploit this problem. Configuring your Cisco IOS device for BGP MD5 authentication greatly increases the work necessary to forge a valid packet from a remote peer. This will not protect your peering session if a valid BGP peer generates an invalid packet.
This can be configured as shown in the following example:
router(config)# router bgp router(config-router)# neighborpassword
It is necessary to configure the same shared MD5 secret on both peers and at the same time. Failure to do so will break the existing BGP session and the new session will not get established until the exact same secret is configured on both devices. For a detailed discussion on how to configure BGP, refer to the following document:
Once the secret is configured, it is prudent to change it periodically. The exact period must fit within your company security policy but it should not be longer than a few months. When changing the secret, again it must be done at the same time on both devices. Failure to do so will break your existing BGP session. The exception is if your Cisco IOS software release contains the integrated CSCdx23494 ( registered customers only) fix on both sides of the connection. With this fix, the BGP session will not be terminated when the MD5 secret is changed only on one side. The BGP updates, however, will not be processed until either the same secret is configured on both devices or the secret is removed from both devices.
Although it is often difficult to block traffic transiting your network, it is possible to identify traffic that should never be allowed to target your infrastructure devices and block that traffic at the border of your network. Infrastructure ACLs are considered a network security best practice and should be considered as a long-term addition to good network security as well as providing some added protection for this specific vulnerability. The white paper entitled "Protecting Your Core: Infrastructure Protection Access Control Lists" presents guidelines and recommended deployment techniques for infrastructure protection ACLs:
http://www.cisco.com/warp/public/707/iacl.html
Users of Cisco IOS XR can avoid exposure to this vulnerability by not enabling 'debug bgp' at a level of 'warning' or anything more verbose and not logging bgp neighbor state changes.
When considering software upgrades, please also consult http://www.cisco.com/en/US/products/products_security_advisories_listing.html and any subsequent advisories to determine exposure and a complete upgrade solution.
In all cases, customers should exercise caution to be certain the devices to be upgraded contain sufficient memory and that current hardware and software configurations will continue to be supported properly by the new release. If the information is not clear, contact the Cisco Technical Assistance Center ("TAC") for assistance.
Cisco customers running IOS XR software should contact Cisco's TAC for repaired software.
Major Release |
Availability of Repaired Releases |
|
---|---|---|
Affected 12.0-Based Release |
Rebuild |
Maintenance Release |
12.0 |
12.0(28b) |
|
12.0DA |
Vulnerable; contact TAC |
|
12.0DB |
Migrate to 12.3(4)T11 or later |
|
12.0DC |
Migrate to 12.3(4)T11 or later |
|
12.0S |
12.0(25)S5 |
|
12.0(26)S2d |
||
12.0(26)S5 |
||
12.0(27)S2d |
||
12.0(27)S4 |
||
12.0(28)S1 |
||
12.0(29)S |
||
12.0SC |
Vulnerable; contact TAC |
|
12.0SP |
Migrate to 12.0S or later |
|
12.0ST |
Migrate to 12.0(26)S5 or later |
|
12.OSV |
12.0(27)SV4 |
|
12.0SX |
Vulnerable; contact TAC |
|
12.0SY |
Migrate to 12.0(26)S5 or later |
|
12.0SZ |
Migrate to 12.0(26)S5 or later |
|
12.0W5 |
12.0(28)W5 (31) |
|
12.0WC |
Vulnerable; contact TAC |
|
12.0WT |
Vulnerable; contact TAC |
|
12.0WX |
Vulnerable; contact TAC |
|
12.0XA |
Migrate to 12.1 latest |
|
12.0XB |
Migrate to 12.0(1)T or later |
|
12.0XC |
Migrate to 12.1 latest |
|
12.0XD |
Migrate to 12.1 latest |
|
12.0XE |
Migrate to 12.1E latest |
|
12.0XF |
Vulnerable; contact TAC |
|
12.0XG |
Migrate to 12.1 latest |
|
12.0XH |
Migrate to 12.1 or later |
|
12.0XI |
Migrate to 12.1 or later |
|
12.0XJ |
Migrate to 12.1 latest |
|
12.0XK |
Migrate to 12.2 latest |
|
12.0XL |
Migrate to 12.2 latest |
|
12.0XM |
Migrate to 12.1 or later |
|
12.0XN |
Migrate to 12.1 latest |
|
12.0XP |
Vulnerable; contact TAC |
|
12.0XQ |
Migrate to 12.1 or later |
|
12.0XR |
Migrate to 12.2 latest |
|
12.0XS |
Migrate to 12.1E latest |
|
12.0XT |
Vulnerable; contact TAC |
|
12.0XU |
Vulnerable; contact TAC |
|
12.0XV |
Migrate to 12.1 or later |
|
Affected 12.1-Based Release |
Rebuild |
Maintenance Release |
12.1 |
12.1(26) |
|
12.1AA |
Migrate to 12.2 latest |
|
12.1AX |
12.1(14)AX3 |
|
12.1AY |
Migrate to 12.1(22)EA2 or later |
|
12.1AZ |
Migrate to 12.1(22)EA2 or later |
|
12.1DA |
Vulnerable; contact TAC |
|
12.1DB |
Migrate to 12.3(4)T11 or later |
|
12.1DC |
Migrate to 12.3(4)T11 or later |
|
12.1E |
12.1(22)E3 |
|
12.1(23)E2 |
||
12.1(26)E |
||
12.1EA |
12.1(22)EA2 |
|
12.1EC |
Vulnerable; contact TAC |
|
12.1EO |
Vulnerable; contact TAC |
|
12.1EV |
Migrate to 12.2S latest |
|
12.1EW |
Migrate to 12.2(18)EW2 or later |
|
12.1EX |
Migrate to 12.1E latest |
|
12.1EY |
Migrate to 12.1E latest |
|
12.1T |
Migrate to 12.2 or later |
|
12.1XA |
Migrate to 12.2 or later |
|
12.1XB |
Migrate to 12.2 or later |
|
12.1XC |
Migrate to 12.2 or later |
|
12.1XD |
Migrate to 12.2 or later |
|
12.1XE |
Migrate to 12.1E latest |
|
12.1XF |
Migrate to 12.3 or later |
|
12.1XG |
Migrate to 12.3 or later |
|
12.1XH |
Migrate to 12.2 or later |
|
12.1XI |
Migrate to 12.2 latest |
|
12.1XJ |
Migrate to 12.3 or later |
|
12.1XL |
MMigrate to 12.3 or later |
|
12.1XM |
Migrate to 12.3 or later |
|
12.1XP |
Migrate to 12.3 or later |
|
12.1XQ |
Migrate to 12.3 or later |
|
12.1XR |
Migrate to 12.3 or later |
|
12.1XT |
Migrate to 12.3 or later |
|
12.1XU |
Migrate to 12.3 or later |
|
12.1XV |
Vulnerable; contact TAC |
|
12.1YA |
Migrate to 12.3 or later |
|
12.1YB |
Migrate to 12.3 or later |
|
12.1YC |
Migrate to 12.3 or later |
|
12.1YD |
Migrate to 12.3 or later |
|
12.1YE |
Migrate to 12.3 or later |
|
12.1YF |
Migrate to 12.3 or later |
|
12.1YH |
Migrate to 12.3 or later |
|
12.1YI |
Migrate to 12.2(2)YC or later |
|
12.1YJ |
Migrate to 12.1(22)EA2 or later |
|
Affected 12.2-Based |
Rebuild |
Maintenance Release |
12.2 |
12.2(27) |
|
12.2B |
Migrate to 12.3(4)T11 or later |
|
12.2BC |
Vulnerable; contact TAC |
|
12.2BW |
Migrate to 12.3 or later |
|
12.2BX |
Migrate to 12.3(7)XI3 -- Available 2/15/05 |
|
12.2BY |
Migrate to 12.3(4)T11 or later |
|
12.2BZ |
Migrate to 12.3(7)XI3 -- Available 2/15/05 |
|
12.2CZ |
Vulnerable; contact TAC |
|
12.2DA |
Vulnerable; contact TAC |
|
12.2DD |
Migrate to 12.3(4)T11 or later |
|
12.2DX |
Migrate to 12.3(4)T11 or later |
|
12.2EW |
12.2(18)EW2 |
|
12.2(25)EW |
||
12.2JK |
12.2(15)JK2 |
|
12.2MB |
Migrate to 12.2(25)SW or later |
|
12.2MC |
Migrate to 12.3(11)T or later |
|
12.2MX |
Migrate to 12.3(8)T5 or later |
|
12.2S |
12.2(25)S |
|
12.2(14)S13 |
||
12.2(18)S8 |
||
12.2(20)S7 |
||
12.2SE |
12.2(20)SE3 |
|
12.2SU |
12.2(14)SU2 |
|
12.2SW |
Migrate to 12.2(25)SW |
|
12.2SX |
Migrate to 12.2(17d)SXB5 |
|
12.2SXA |
Migrate to 12.2(17d)SXB5 |
|
12.2SXB |
12.2(17d)SXB5 |
|
12.2SXD |
12.2(18)SXD2 |
|
12.2SY |
Migrate to 12.2(17d)SXB5 |
|
12.2SZ |
Migrate to 12.2(25)S or later |
|
12.2T |
12.2(15)T15 |
|
12.2XA |
Migrate to 12.3 or later |
|
12.2XB |
Migrate to 12.3 or later |
|
12.2XC |
Migrate to 12.3 or later |
|
12.2XD |
Migrate to 12.3 or later |
|
12.2XE |
Migrate to 12.3 or later |
|
12.2XF |
Vulnerable; contact TAC |
|
12.2XG |
Migrate to 12.3 or later |
|
12.2XH |
Migrate to 12.3 or later |
|
12.2XI |
Migrate to 12.3 or later |
|
12.2XJ |
Migrate to 12.3 or later |
|
12.2XK |
Migrate to 12.3 or later |
|
12.2XL |
Migrate to 12.3 or later |
|
12.2XM |
Migrate to 12.3 or later |
|
12.2XN |
Migrate to 12.3 or later |
|
12.2XQ |
Migrate to 12.3 or later |
|
12.2XS |
Migrate to 12.3 or later |
|
12.2XT |
Migrate to 12.3 or later |
|
12.2XU |
Migrate to 12.3 or later |
|
12.2XW |
Migrate to 12.3 or later |
|
12.2XZ |
Migrate to 12.3 or later |
|
12.2YA |
12.2(4)YA8 |
|
12.2YB |
Migrate to 12.3 or later |
|
12.2YC |
Migrate to 12.3 or later |
|
12.2YE |
Migrate to 12.2S or later |
|
12.2YF |
Migrate to 12.3 or later |
|
12.2YG |
Migrate to 12.3 or later |
|
12.2YH |
Migrate to 12.3 or later |
|
12.2YJ |
Migrate to 12.3 or later |
|
12.2YK |
Migrate to 12.3T or later |
|
12.2YL |
Migrate to 12.3T or later |
|
12.2YM |
Migrate to 12.3T or later |
|
12.2YN |
Migrate to 12.3T or later |
|
12.2YO |
Migrate to 12.2(17d)SXB5 |
|
12.2YP |
Migrate to 12.3 or later |
|
12.2YQ |
Migrate to 12.3(4)T11 or later |
|
12.2YR |
Migrate to 12.3(4)T11 or later |
|
12.2YS |
Migrate to 12.3T or later |
|
12.2YT |
Migrate to 12.3 or later |
|
12.2YU |
Migrate to 12.3T or later |
|
12.2YV |
Migrate to 12.3(4)T11 or later |
|
12.2YW |
Migrate to 12.3(4)T11 or later |
|
12.2YX |
Migrate to 12.2(14)SU2 or later |
|
12.2YY |
Migrate to 12.3T or later |
|
12.2YZ |
Migrate to 12.2(25)S or later |
|
12.2ZA |
Migrates to 12.2(17d)SXB5 or 12.2(18)SXD2 |
|
12.2ZB |
Migrate to 12.3T or later |
|
12.2ZC |
Migrate to 12.3T or later |
|
12.2ZD |
Migrate to 12.3 or later |
|
12.2ZE |
Migrate to 12.3 or later |
|
12.2ZF |
Migrate to 12.3(4)T11 or later |
|
12.2ZG |
Migrate to 12.3(4)T11 or later |
|
12.2ZH |
Migrate to 12.3(4)T11 or later |
|
12.2ZI |
Migrate to 12.2(25)S or later |
|
12.2ZJ |
Migrate to 12.3T or later |
|
12.2ZK |
12.2(15)ZK6 |
|
12.2ZL |
Migrate to 12.3(7)T7 or later |
|
12.2ZN |
Migrate to 12.3T or later |
|
12.2ZO |
Migrate to 12.3 or later |
|
12.2ZP |
Vulnerable; contact TAC |
|
Affected 12.3-Based |
Rebuild |
Maintenance Release |
12.3 |
12.3(6d) |
|
12.3(9c) |
||
12.3(10a) |
||
12.3(12) |
||
12.3B |
12.3(5a)B3 |
|
12.3BC |
12.3(9a)BC1 |
|
12.3BW |
Migrate to 12.3(7)T7 or later |
|
12.3T |
12.3(4)T11 |
|
12.3(7)T7 |
||
12.3(8)T5 |
||
12.3(11)T |
||
12.3XA |
Migrate to 12.3(7)T7 or later |
|
12.3XB |
Migrate to 12.3(8)T5 or later |
|
12.3XC |
12.3(2)XC3 |
|
12.3XD |
12.3(4)XD4 |
|
12.3XE |
12.3(2)XE1 |
|
12.3XF |
Migrate to 12.3(11)T or later |
|
12.3XG |
Migrate to 12.3(11)T or later |
|
12.3XH |
Migrate to 12.3(11)T or later |
|
12.3XI |
12.3(7)XI3 - Available 2/15/05 |
|
12.3XJ |
Vulnerable; contact TAC |
|
12.3XK |
Vulnerable; contact TAC |
|
12.3XL |
Vulnerable; contact TAC |
|
12.3XN |
Vulnerable; contact TAC |
|
12.3XQ |
12.3(4)XQ1 Release date not yet determined |
|
12.3XR |
Vulnerable; contact TAC |
|
12.3XS |
12.3(7)XS2 |
|
12.3XU |
12.3(8)XU4 |
|
12.3XV |
Migrate to 12.3(11)T or later |
|
12.3XX |
12.3(8)XX1 |
|
12.3YA |
12.3(8)YA1 |
|
12.3YC |
Vulnerable; contact TAC |
|
12.3YD |
Vulnerable; contact TAC |
|
12.3YE |
Migrate to 12.3(4)T11 or later |
|
12.3YF |
Vulnerable; contact TAC |
|
12.3YH |
Vulnerable; contact TAC |
|
12.3YJ |
Vulnerable; contact TAC |
|
12.3YL |
Vulnerable; contact TAC |
The Cisco PSIRT is not aware of any public announcements or malicious use of the vulnerability described in this advisory.
This vulnerability was discovered by Cisco during internal testing.
To learn about Cisco security vulnerability disclosure policies and publications, see the Security Vulnerability Policy. This document also contains instructions for obtaining fixed software and receiving security vulnerability information from Cisco.
Revision 1.5 |
2005-March-21 |
Updated the IOS Software 12.2T available repaired release information in the IOS release table in the Software Versions and Fixes section. |
Revision 1.4 |
2005-February-09 |
Modifications and additions to the Details section. |
Revision 1.3 |
2005-February-04 |
Modifications to Software Versions and Fixes Table, Summary, Affected Products, and Details sections. |
Revision 1.2 |
2005-February-01 |
Additional rebuilds added to 12.2S |
Revision 1.1 |
2005-January-29 |
Added IOS XR as affected. Minor syntax changes. Modified 12.2ZA migration path. |
Revision 1.0 |
2005-January-26 |
Initial public release. |
THIS DOCUMENT IS PROVIDED ON AN "AS IS" BASIS AND DOES NOT IMPLY ANY KIND OF GUARANTEE OR WARRANTY, INCLUDING THE WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. YOUR USE OF THE INFORMATION ON THE DOCUMENT OR MATERIALS LINKED FROM THE DOCUMENT IS AT YOUR OWN RISK. CISCO RESERVES THE RIGHT TO CHANGE OR UPDATE THIS DOCUMENT AT ANY TIME.
A stand-alone copy or paraphrase of the text of this document that omits the distribution URL is an uncontrolled copy, and may lack important information or contain factual errors. The information in this document is intended for end-users of Cisco products.