-
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 https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20050126-bgp.
-
This section provides details on affected products.
Vulnerable 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 Vulnerable
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.
-
Remove the configuration command bgp
log-neighbor-changes. This feature is used to monitor BGP peer
status and its removal may reduce network monitoring capabilities. More
information on this command is available here:
http://www.cisco.com/en/US/docs/ios/12_3/iproute/command/reference/ip2_a1g.html#wp1040601
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:
BGP MD5
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)# 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.
Infrastructure Access Control Lists (iACLs)
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
Workarounds for IOS XR
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.
-
Remove the configuration command bgp
log-neighbor-changes. This feature is used to monitor BGP peer
status and its removal may reduce network monitoring capabilities. More
information on this command is available here:
http://www.cisco.com/en/US/docs/ios/12_3/iproute/command/reference/ip2_a1g.html#wp1040601
-
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.