A Cisco device running IOS and enabled for the Border Gateway Protocol (BGP) is vulnerable to a Denial of Service (DOS) attack from a malformed BGP packet. 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 advisory is available at http://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20040616-bgp.
A Cisco device running IOS and enabled for the Border Gateway Protocol (BGP) is vulnerable to a Denial of Service (DOS) attack from a malformed BGP packet. 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 advisory is available at http://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20040616-bgp.
This section provides details on affected products.
This issue affects all Cisco devices running any unfixed version of Cisco IOS or Cisco IOS XR code and configured for BGP routing.
A router which is running the BGP process will have a line in the config defining the AS number, which can be seen by issuing the command show running-config:
router bgp
This vulnerability is present in any unfixed version of IOS, from the beginning of support for the BGP protocol, including versions 9.x, 10.x, 11.x and 12.x.
This vulnerability is present in any unfixed version of IOS XR, from the beginning of support for the BGP protocol, including versions 2.0.X and 3.0.X
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 which cannot participate in BGP or cannot be configured for BGP.
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 and enabling the BGP protocol will reload when a malformed BGP packet is received. BGP runs over 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 send a BGP packet to a Cisco IOS device from an unauthorized source.
A Cisco 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 IDs CSCdu53656 ( registered customers only) and CSCea28131 ( registered customers only) .
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.
For additional information regarding BGP security risk assessment, mitigation techniques, and deployment best practices, please consult ftp://ftp-eng.cisco.com/cons/isp/security/BGP-Risk-Assesment-v.pdf.
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 is a valid workaround to protect the vulnerable device.
This can be configured as shown in the following example:
router(config)# router bgp router(config-router)# neighbor <IP_address> password <enter_your_secret_here>
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 which 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 a workaround 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:
Note: Many of the releases in this table were fixed prior to the release of other IOS advisories. Read the table carefully to determine if your IOS release contains these fixes. Most fixed releases for the TCP and SNMP advisories such as http://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20040420-snmp and http://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20040420-tcp-ios contained the fixes for this BGP advisory.
Each row of the Cisco IOS software table (below) describes a release train and the platforms or products for which it is intended. If a given release train is vulnerable, then the earliest possible releases that contain the fix (the "First Fixed Release") and the anticipated date of availability for each are listed in the "Rebuild," "Interim," and "Maintenance" columns. A device running a release in the given train that is earlier than the release in a specific column (less than the First Fixed Release) is known to be vulnerable. The release should be upgraded at least to the indicated release or a later version (greater than or equal to the First Fixed Release label). When selecting a release, keep in mind the following definitions:
Most heavily tested, stable, and highly recommended release of a release train in any given row of the table.
Constructed from the previous maintenance or major release in the same train, it contains the fix for a specific defect. Although it receives less testing, it contains only the minimal changes necessary to repair the vulnerability.
Built at regular intervals between maintenance releases and receives less testing. Interims should be selected only if there is no other suitable release that addresses the vulnerability. Interim images should be upgraded to the next available maintenance release as soon as possible. Interim releases are not available through manufacturing, and usually they are not available for customer download from Cisco.com without prior arrangement with the Cisco TAC.
In all cases, customers should exercise caution to confirm that the devices to be upgraded contain sufficient memory and that current hardware and software configurations will continue to be supported properly by the new software release. If the information is not clear, contact the Cisco TAC for assistance as shown in the Obtaining Fixed Software section below.
More information on Cisco IOS software release names and abbreviations is available at http://www.cisco.com/warp/public/620/1.html.
The fixes will be available at the Software Center located at http://www.cisco.com/tacpage/sw-center/.
For software installation and upgrade procedures, see http://www.cisco.com/warp/public/130/upgrade_index.shtml.
For a current view of all posted and repaired images for Cisco IOS, please check the listing available to registered Cisco.com users at: http://www.cisco.com/tacpage/sw-center/sw-ios.shtml.
Major Release |
Availability of Repaired Releases* |
||
---|---|---|---|
Affected 11.1-Based Release |
Rebuild |
Interim** |
Maintenance |
11.1 |
Migrate to 11.2 or later |
||
11.1AA |
Migrate to 11.2P or later |
||
11.1CA |
Migrate to 12.0 or later |
||
11.1CC |
Migrate to 12.0 or later |
||
Affected 11.2-Based Release |
Rebuild |
Interim** |
Maintenance |
11.2 |
11.2(26g) |
||
11.2P |
11.2(26)P7 |
||
11.2SA |
Not Vulnerable |
||
Affected 11.3-Based Release |
Rebuild |
Interim** |
Maintenance |
11.3 |
11.3(11f) |
||
11.3T |
11.3(11b)T5 |
||
Affected 12.0-Based Release |
Rebuild |
Interim** |
Maintenance |
12.0 |
12.0(27) |
||
12.0DA |
Migrate to 12.2DA or later |
||
12.0S |
12.0(21)S7 |
||
12.0(22)S2e |
|||
12.0(22)S3c |
|||
12.0(22)S4a |
|||
12.0(22)S5 |
|||
12.0(23)S3 |
|||
12.0(24)S2 |
|||
12.0(25)S1 |
|||
12.0(26)S |
|||
12.0SL |
Migrate to 12.0(23)S3 or later |
||
12.0ST |
12.0(17)ST10 Available upon request |
||
12.0(21)ST7 |
|||
Migrate to 12.0(26)S2 or later |
|||
12.0SV |
12.0(27)SV |
||
12.0SX |
12.0(25)SX |
||
12.0SZ |
12.0(23)SZ3 |
||
12.0(26)SZ |
|||
Migrate to 12.0(26)S2 or later |
|||
12.0T |
Migrate to 12.1 or later |
||
12.0W5 |
12.0(16)W5(21c) |
||
12.0(25)W5(27b) |
|||
12.0(26)W5(28a) |
|||
12.0(27)W5(29) |
|||
12.0WC |
Not Vulnerable |
||
12.0WX |
Migrate to 12.0W5 or later |
||
12.0XA |
Migrate to 12.1 latest or later |
||
12.0XC |
Migrate to 12.1 latest or later |
||
12.0XD |
Migrate to 12.1 latest or later |
||
12.0XE |
Migrate to 12.1E latest or later |
||
12.0XG |
Migrate to 12.1 latest or later |
||
12.0XH |
Migrate to 12.1 latest or later |
||
12.0XI |
Migrate to 12.1 latest or later |
||
12.0XJ |
Migrate to 12.1 latest or later |
||
12.0XK |
Migrate to 12.1T latest or later |
||
12.0XL |
Migrate to 12.2 latest or later |
||
12.0XN |
Migrate to 12.1 latest or later |
||
12.0XP |
Not Vulnerable |
||
12.0XR |
Migrate to 12.2 latest or later |
||
12.0XS |
Migrate to 12.1E latest or later |
||
12.0XU |
Not Vulnerable |
||
Affected 12.1-Based Release |
Rebuild |
Interim** |
Maintenance |
12.1 |
12.1(20) |
||
12.1AA |
Migrate to 12.2 latest or later |
||
12.1AX |
Not Vulnerable |
||
12.1AY |
Not Vulnerable |
||
12.1AZ |
12.1(14)AZ |
||
12.1DA |
Migrate to 12.2DA or later |
||
12.1DB |
Migrate to 12.2B or later |
||
12.1E |
12.1(6)E12.0 |
||
12.1(8b)E14 |
|||
12.1(11b)E12.0 |
|||
12.1(12c)E7 |
|||
12.1(13)E6 |
|||
12.1(14)E4 |
|||
12.1(19)E |
|||
12.1(20)E |
|||
12.1EA |
12.1(14)EA1 |
||
12.1EB |
12.1(14)EB1 |
||
12.1EC |
12.1(19)EC |
||
12.1EO |
12.1(19)EO |
||
12.1EV |
12.1(12c)EV2 |
||
12.1EW |
12.1(19)EW |
||
12.1EX |
Migrate to 12.1(14)E4 or later |
||
12.1EY |
Migrate to 12.1(14)E4 or later |
||
12.1T |
12.1(5)T19 |
||
12.1XA |
Migrate to 12.1(5)T19 or later |
||
12.1XB |
Migrate to 12.1(5)T19 or later |
||
12.1XC |
Migrate to 12.1(5)T19 or later |
||
12.1XD |
Migrate to 12.2 or later |
||
12.1XE |
Migrate to 12.1E latest or later |
||
12.1XF |
Migrate to 12.2(4)T6 or later |
||
12.1XG |
Migrate to 12.2(4)T6 or later |
||
12.1XH |
Migrate to 12.2 or later |
||
12.1XI |
Migrate to 12.2 latest or later |
||
12.1XJ |
Migrate to 12.2(4)T6 or later |
||
12.1XL |
Migrate to 12.2T latest or later |
||
12.1XM |
Migrate to 12.2T latest or later |
||
12.1XP |
Migrate to 12.2(4)T6 or later |
||
12.1XQ |
Migrate to 12.2T latest or later |
||
12.1XR |
Migrate to 12.2T latest or later |
||
12.1XT |
Migrate to 12.2(4)T6 or later |
||
12.1XU |
Migrate to 12.2T latest or later |
||
12.1XV |
Migrate to 12.2XB or later |
||
12.1XY |
Migrate to 12.2XB or later |
||
12.1YA |
Migrate to 12.2(8)T10 or later |
||
12.1YB |
Migrate to 12.2(4)T6 or later |
||
12.1YC |
Migrate to 12.2(8)T10 or later |
||
12.1YD |
Migrate to 12.2(8)T10 or later |
||
12.1YH |
Migrate to 12.2(13)T5 or later |
||
12.1YJ |
Not Vulnerable |
||
Affected 12.2-Based Release |
Rebuild |
Interim** |
Maintenance |
12.2 |
12.2(10d) |
||
12.2(12e) |
|||
12.2(12h)M1 |
|||
12.2(13c) |
|||
12.2(16a) |
|||
12.2(17) |
|||
12.2B |
12.2(15)B1 |
||
12.2BC |
12.2(15)BC1 |
||
12.2BW |
Migrate to 12.2(15)T12 or later |
||
12.2BX |
12.2(16)BX |
||
12.2BY |
Migrate to 12.2(15)B1 or later |
||
12.2BZ |
Migrate to 12.2(16)BX or later |
||
12.2CX |
12.2(15)CX |
||
12.2DA |
12.2(12)DA6 |
||
12.2DD |
Migrate to 12.2(15)B1 or later |
||
12.2DX |
Migrate to 12.2(15)B1 or later |
||
12.2EW |
12.2(18)EW |
||
12.2JA |
12.2(13)JA |
||
12.2S |
12.2(14)S2 |
||
12.2(18)S |
|||
12.2SE |
12.2(18)SE |
||
12.2SU |
12.2(14)SU |
||
12.2SV |
12.2(18)SV |
||
12.2SW |
12.2(18)SW |
||
12.2SX |
12.2(14)SX2 |
||
12.2SXA |
12.2(17b)SXA |
||
12.2SXB |
12.2(17d)SXB |
||
12.2SY |
12.2(14)SY |
||
12.2SZ |
12.2(14)SZ2 |
||
12.2T |
12.2(4)T6 |
||
12.2(8)T10 |
|||
12.2(11)T9 |
|||
12.2(13)T5 |
|||
12.2(15)T4 |
|||
12.2XA |
Migrate to 12.2(11)T9 or later |
||
12.2XB |
12.2(2)XB16 |
||
12.2XD |
Migrate to 12.2(8)T10 or later |
||
12.2XE |
Migrate to 12.2(8)T10 or later |
||
12.2XG |
Migrate to 12.2(8)T10 or later |
||
12.2XH |
Migrate to 12.2(11)T9 or later |
||
12.2XI |
Migrate to 12.2(11)T9 or later |
||
12.2XJ |
Migrate to 12.2(11)T9 or later |
||
12.2XK |
Migrate to 12.2(11)T9 or later |
||
12.2XL |
Migrate to 12.2(15)T4 or later |
||
12.2XM |
Migrate to 12.2(15)T4 or later |
||
12.2XN |
Migrate to 12.2(11)T9 or later |
||
12.2XQ |
Migrate to 12.2(11)T9 or later |
||
12.2XS |
Migrate to 12.2(11)T9 or later |
||
12.2XT |
Migrate to 12.2(11)T9 or later |
||
12.2XU |
Migrate to 12.2(15)T12 or later |
||
12.2XW |
Migrate to 12.2(11)T9 or later |
||
12.2YA |
Migrate to 12.2(15)T4 or later |
||
12.2YB |
Migrate to 12.2(15)T4 or later |
||
12.2YC |
Migrate to 12.2(11)T11 or later |
||
12.2YD |
Migrate to 12.2(8)YY or later |
||
12.2YE |
Migrate to 12.2S or later |
||
12.2YF |
Migrate to 12.2(15)T4 or later |
||
12.2YG |
Migrate to 12.2(13)T5 or later |
||
12.2YH |
Migrate to 12.2(15)T4 or later |
||
12.2YJ |
Migrate to 12.2(15)T4 or later |
||
12.2YL |
Migrate to 12.3(2)T or later |
||
12.2YM |
Migrate to 12.3(2)T or later |
||
12.2YN |
Migrate to 12.3(2)T or later |
||
12.2YO |
Migrate to 12.2(14)SY or later |
||
12.2YP |
12.2(11)YP1 |
||
12.2YQ |
Migrate to 12.3(4)T or later |
||
12.2YR |
Migrate to 12.3(4)T or later |
||
12.2YS |
Migrate to 12.3T or later |
||
12.2YT |
Migrate to 12.2(15)T4 or later |
||
12.2YU |
Migrate to 12.3(4)T or later |
||
12.2YV |
Migrate to 12.3(4)T or later |
||
12.2YW |
Migrate to 12.3(2)T or later |
||
12.2YX |
Migrate to 12.2(14)SU or later |
||
12.2YY |
12.2(8)YY3 |
||
12.2YZ |
Migrate to 12.2(14)SZ or later |
||
12.2ZA |
12.2(14)ZA2 |
||
12.2ZB |
Migrate to 12.3T or later |
||
12.2ZC |
Migrate to 12.3T or later |
||
12.2ZE |
Migrate to 12.3 or later |
||
12.2ZF |
Migrate to 12.3(4)T or later |
||
12.2ZG |
Migrate to 12.3(4)T or later |
||
12.2ZH |
Migrate to 12.3(4)T or later |
||
12.2ZI |
Migrate to 12.2(18)S or later |
||
12.2ZK |
12.2(15)ZK |
||
12.2ZL |
12.2(15)ZL |
||
12.2ZN |
Migrate to 12.3(2)T or later |
||
12.2ZO |
12.2(15)ZO |
||
12.2ZP |
12.2(13)ZP |
||
Affected 12.3-Based Release |
Rebuild |
Interim** |
Maintenance |
12.3 |
Not Vulnerable |
||
12.3T |
Not Vulnerable |
Product |
First Fixed Release |
---|---|
Cisco IOS XR |
IOS XR 3.2.5 |
The research which led to this vulnerability being discovered was announced in a public announcement at NANOG in June 2003. The Cisco PSIRT team is not aware of any malicious use of the vulnerabilities described in this advisory. We were made aware of this issue through internal testing as well as notification from a research team at the University of California at Santa Barbara.
The Cisco PSIRT is not aware of any malicious use of the vulnerability described in this advisory.
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.1 |
12-January-2006 |
Updated the Vulnerable Products section. Added the Products/First Fixed Release table to the Software Versions and Fixes section. |
Revision 1.0 |
16-June-2004 |
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.