|
Brought to you by:
Suppliers of:
|
|
|
| |
Multiple Cisco products contain vulnerabilities in the processing of H.323 messages, which are typically used in Voice over Internet Protocol (VoIP) or multimedia applications. A test suite has been developed by the University of Oulu to target this protocol and identify vulnerabilities.
Support for the H.323 protocol was introduced in Cisco IOS? Software Release 11.3T. Release 11.3T and all later Cisco IOS releases are affected if configured for various types of voice/multimedia application support. Vulnerable devices include those configured as an H.323 network element as well as those configured for IOS Network Address Translation (NAT) and those configured for IOS Firewall (also known as Context-Based Access Control [CBAC]).
Other Cisco voice products that do not run Cisco IOS may also be affected.
These vulnerabilities can be exploited repeatedly to produce a denial of service (DoS). |
| |
Credit:
The complete advisory is available from: http://www.cisco.com/warp/public/707/cisco-sa-20040113-h323.shtml.
The information has been provided by Cisco Systems Product Security Incident Response Team.
|
| |
Affected Products:
All Cisco products that run Cisco IOS software and support H.323 packet processing are affected. This may include devices configured for Session Initiation Protocol (SIP) or Media Gateway Control Protocol (MGCP), since support for these protocols can enable support for H.323. Cisco AS5xxx series platforms are vulnerable regardless of their configuration because of a bug that enables H.323 but does not allow the protocol to be turned off.
Other affected products that do not run Cisco IOS software include:
* Cisco CallManager versions 3.0 through 3.3
* Cisco Conference Connection (CCC)
* Cisco Internet Service Node (ISN)
* Cisco BTS 10200 Softswitch
* Cisco 7905 IP Phone H.323 Software Version 1.00
* Cisco ATA 18x series products running H.323/SIP loads with versions earlier than 2.16.1
Note: Cisco ATA 18x series products is only vulnerable when configured for H.323. They are not vulnerable when configured for SIP.
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 Cisco IOS Software Release 12.0(3) with an installed image name of C2500-IS-L. The release train label is 12.0.
Cisco Internetwork Operating System Software IOS (TM)
2500 Software (C2500-IS-L), Version 12.0(3), RELEASE SOFTWARE
The following example shows a product running Cisco IOS Software 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 version naming is available at http://www.cisco.com/warp/public/620/1.html.
If you are running Cisco IOS versions 10.x, 11.1, 11.2 or earlier, you are not affected.
Cisco IOS Processing of H.323 Traffic
There are three areas where IOS can be vulnerable to malformed H.323 packets. Please read the following sections to determine if your router is affected.
Note: If you choose to block H.323 traffic using an access list to prevent H.323 traffic from entering the router, then you are protected and need not bother with the details below. Please see the Workarounds section for more details on how to do this. Cisco recommends that customers upgrade to an appropriate IOS image at their earliest convenience.
To determine if your Cisco IOS device is processing H.323 traffic and is possibly vulnerable, it is necessary to understand the three different ways that Cisco IOS software processes H.323 traffic.
1. H.323 Endpoints
This includes H.323 Gateway, H.323 Gatekeeper, H.323 Gatekeeper with Proxy and ALL of the AS5xxx platforms.
From the enable prompt, run the show process cpu command and look for a process called CCH323_CT. In later versions of Cisco IOS software, you can execute the show process cpu | include CCH323_CT .
Router# show process cpu | include CCH323_CT
112 Mwe 60F3E5E0 295112 239401 123220072/24000 0 CCH323_CT
Note: Not all access server images support H.323. Only images with a "PLUS" feature set (such as IP PLUS, ENTERPRISE PLUS) support voice and will have the CCH323_CT process running.
* If you see the process called CCH323_CT, your router is affected. Please consult the IOS table to determine which version is appropriate for your device. If you cannot immediately upgrade, the following workarounds may work for you
o If you are not using H.323 within your network, an inbound access list to block TCP port 1720 will protect your router, but it is recommended that you upgrade as soon as is feasible.
o If you are using H.323, then you can configure an access list to restrict TCP port 1720 traffic to known, trusted IP addresses. Again, upgrading as soon as is feasible is recommended.
* If you do NOT see the CCH323_CT process, you may still be vulnerable. Some configurations of H.323 Gatekeeper are vulnerable. Affected configurations are those gatekeepers configured for H.323 Proxy. To check to see if you are configured as a gatekeeper, check your configuration for the line "proxy h323" in the global configuration. If you have "proxy h323" configured, then you are vulnerable.
o If you are not using GK proxy functionality, you can disable proxy functionality by doing the following configuration.
Note: This will drop all calls being managed by the gatekeeper. Perform this only when you can safely stop gatekeeper functionality.
Router(config)#no proxy h323
Router(config)#gatekeeper
Router(config-gk)#shutdown
Router(config-gk)#no shutdown
o If you are using H.323 proxy, your options are to either configure an access list to restrict TCP port 1720 traffic to known, trusted IP addresses, or to upgrade your IOS version.
2. IOS Firewall (Context-Based Access Control)
If your IOS device is configured to use IOS Firewall (IOS FW, or Context-Based Access Control [CBAC]), check to see if IOS FW is running on the device by issuing the show ip inspect all command. Look for the following lines indicating that IOS FW is applied to an interface. In this case, inspection rule "<NAME>" is applied inbound to interface FastEthernet0/0.
Interface Configuration
Interface FastEthernet0/0
Inbound inspection rule is <NAME>
tcp alert is on audit-trail is off timeout 3600
h323 alert is on audit-trail is off timeout 3600
Outgoing inspection rule is not set
* To turn off inbound IOS FW (CBAC) on interface FastEthernet0/0, enter the following commands in interface configuration mode.
Router#config t
Router(config)#Interface FastEthernet 0/0
Router(config-if)#no ip inspect <NAME> in
* If outbound IOS FW (CBAC) is configured on FastEthernet0/0, enter the following commands in interface configuration mode.
Router#config t
Router(config)#Interface FastEthernet 0/0
Router(config-if)#no ip inspect <NAME> out
* To turn off the IOS FW (CBAC) processing of H.323 messages only while leaving other IOS FW behavior unaffected, enter the following command in global configuration mode.
Router(config)#no ip inspect name <NAME> h323
Cisco recommends that you upgrade your IOS as soon as possible.
3. IOS Network Address Translation (NAT)
If you have configured NAT rules and have NAT activated on any interface, check to see if NAT is configured and activated on the device by issuing the show ip nat statistics command.
Router#show ip nat statistics
Total active translations: 3 (3 static, 0 dynamic; 0 extended
Outside interfaces
Inside interfaces
Hits: 0 Misses: 0
Expired translations: 0
Dynamic mappings:
* If there is no output or the output doesn't list any inside or outside interfaces (as in the example above), then the IOS device is not doing NAT and you are not vulnerable because of NAT.
* If the output does list any inside or outside interfaces, then you may be vulnerable because of NAT. An example is shown below.
Total active translations: 3 (3 static, 0 dynamic; 0 extended
Outside interfaces:
Serial3/0
Inside interfaces:
Serial1/0
Hits: 0 Misses: 0
Expired translations: 0
Dynamic mappings:
* You are not vulnerable because of NAT if your configuration only contains Port Address Translation (PAT) statements and your PAT statements do not explicitly specify TCP port 1720 in your PAT translations.
o To see if you are doing only PAT, check to see if your IOS NAT configuration contains any of the following NAT rules without the overload, route-map, or extendable keywords.
ip nat outside source ...
ip nat inside destination ...
ip nat inside source ...
If you see any of the above lines without the overload, route-map, or extendable keywords, then you are vulnerable.
o To see if you are doing a static PAT for H.323 (TCP port 1720), look for any lines with the following pattern.
ip nat (inside|outside) source static tcp
ip-addr (port|1720) ip-addr (1720|port)
The following examples would be vulnerable.
ip nat inside source static tcp 10.1.0.1 1720 10.2.0.1 5834
ip nat outside source static tcp 10.15.12.1 6884 10.6.7.1 1720
ip nat inside source static tcp 10.1.0.17 1720 10.33.14.1 1720
The following examples would not be vulnerable.
ip nat inside source static tcp 10.1.0.17 53 10.33.14.1 53
ip nat outside source static udp 10.1.14.75 1720 10.131.1.1 6888
If any of your configuration lines are vulnerable, please consult the Workarounds section.
To determine if a particular Cisco IOS release is vulnerable, consult the list below in the Software Versions and Fixes section to determine if the product is running an affected version of software.
Unaffected Products:
The following list of Cisco products is provided specifically to list those products that customers may also be concerned about in regards to these vulnerabilities. The products below are not affected either because they are not vulnerable or because they do not support H.323 processing. Any other Cisco products that have not been identified as vulnerable or have been omitted from the list below should be considered as not vulnerable, as no other Cisco products are known to be affected by these vulnerabilities.
* Cisco IP Phone models 7960, 7940, 7912, 7910, 7902, 30VIP, and 12SP+
* Cisco uOne (All Versions)
* VG248 Analog Phone Gateway
* Cisco Unity Server
* Catalyst 6000 WS-X6608 Voice Services Module and WS-X6624 FXS Analog Station Interface Module
* PGW2200, SC2200, VSC3000 and H.323 Signalling Interface (HSI)
* Cisco IP/VC 3500 Series
* IP/TV series
* Catalyst 19xx, 28xx, 290x, 292x, 2948g, 3000, 3200, 3900, 4000, 4912g, and 5000 series switches
* Catalyst 2900XL, 2900XL-LRE, 2940, 2950, 2950-LRE, 2955, 2970, 3500XL, 3550, and 3750 series switches
* Cache Engine series
* Content Engine series
* SN5400 series storage routers
* VPN 3000 and VPN 5000 series VPN concentrators
* Voice Interworking Service Module (VISM)
* VCO/4K
* Cisco Secure Intrusion Detection System (NetRanger) appliance and IDS Module
* BR340, WGB340, AP340, AP350, and BR350 Cisco/Aironet wireless products
* Cisco Aironet 1100 series, 1200 series, and 1400 series wireless products
* Cisco PIX Firewall
* Cisco Catalyst 6500 Series Firewall Services Module
* Cisco 6xx series DSL modems running CBOS
* Cisco 7xx series routers
* Cisco 12000 series routers
* Cisco 10000 series routers
* 61xx and 62xx series DSLAMs
* Cisco CSS11xxx series (including SSL Accelerator)
* LocalDirector
* BPX, IGX, MGX WAN switches, and the Service Expansion Shelf
* Cisco Intelligent Contact Management (ICM)
* Cisco ONS 15xxx platforms
Technical Details:
H.323 is the International Telecommunications Union (ITU) standard for real-time multimedia communications and conferencing over packet-based (IP) networks. A subset of the H.323 standard is H.225.0, a standard used for call signalling protocols and media stream packetization over IP networks.
The H.225.0 standard defines message formats for call setup, call control, and communications using Abstract Syntax Notation One (ASN.1). ITU Standard Q.931, which was developed for call signalling purposes in ISDN networks, is also used as the standard for the call setup messages within H.225.0.
The University of Oulu Secure Programming Group (OUSPG) has created a test suite for H.323, more specifically the H.225.0 and Q.931 messages, to help support proactive discovery and resolution of vulnerabilities in the processing of H.323 messages. The test suite is generally used to analyze a protocol and produce messages that probe various design limits within an implementation of a protocol. Test packets containing overly long or exceptional elements in various fields of the H.323 Protocol Data Units (PDUs) can be programmatically generated and then transmitted to a network device under test. The PROTOS test suite for H.323, as distributed, contains approximately 4500 individual test cases.
The vulnerabilities discovered in the affected products can be easily and repeatedly demonstrated with the use of the OUSPG PROTOS Test Suite for H.323. The largest group of vulnerabilities described in this advisory result from insufficient checking of H.225.0 messages as they are received and processed by an affected system. Malformed H.225.0 messages received by affected systems can cause various parsing and processing functions to fail, which may result in a system crash and reload (or reboot) in most circumstances.
Typically, H.323 network elements implement call signalling over both UDP and TCP transports on port 1720. The H.323 test suite from OUSPG only tests the TCP implementation on port 1720 by default.
Workarounds:
Workarounds for H.323 endpoint and proxy configurations
Affected devices that must run H.323 are vulnerable, and there are not any specific configurations that can be used to protect them. Applying access lists on interfaces that should not accept H.323 traffic and putting firewalls in strategic locations may greatly reduce exposure until an upgrade can be performed.
The Voice over IP SAFE paper talks about a variety of best practices that should keep your voice network isolated from the Internet. This reduces the risk of exposure, although attacks from within the local network should always be considered a potential risk.
SAFE: IP Telephony Security in Depth
Below is an example of an access list to block H.323 management traffic from anywhere but a permitted network. In this example, the permitted network is 172.16.0.0/16.
!--- Permit access from any IP address in the 172.16.0.0/16
!--- network to anywhere on port 1720.
access-list 101 permit tcp 172.16.0.0 0.0.255.255 any eq 1720
!--- Permit access from anywhere to a host in the
!--- 172.16.0.0/26 network on port 1720.
access-list 101 permit tcp any 172.16.0.0 0.0.255.255 eq 1720
!--- Deny all traffic from port 1720.
access-list 101 deny tcp any eq 1720 any
!--- Deny all traffic to port 1720.
access-list 101 deny tcp any any eq 1720
!--- Permit all other traffic.
access-list 101 permit ip any any
Workarounds for IOS devices performing NAT on H.323 traffic
Cisco IOS devices that run an affected version of 12.1 or 12.1E code and are configured to do static NAT are vulnerable to attacks with corrupted packets being processed by NAT through the device. There are several methods of reducing or removing the risk in these circumstances.
* Access lists for the outside interface
H.323 deep packet inspection is only done on packets with a source or destination port of 1720. If it is not necessary to translate or accept these packets, they can be blocked by an external device such as a firewall, or by input access lists applied to the outside interface of the device performing the NAT.
interface serial 0/0
ip nat outside
!--- This is used to indicate which interface
!--- this configuration should be applied to.
ip access-group 101 in
!
access-list 101 deny tcp any eq 1720 any
access-list 101 deny tcp any any eq 1720
access-list 101 permit ip any any
* Policy-based routing to block port 1720 traffic on static NAT translations
Simple static translations allow through traffic on any port. If it is not necessary to allow H.323 traffic through your static NAT configuration, but applying access lists to your outside interface is not practical, you may use policy-based routing to reroute traffic destined for port 1720. Policy-based routing is processed before NAT.
In this example, the address 1.0.0.5 is an externally routable address for which the router is performing NAT to a local network address.
interface Null0
no ip unreachables
!
interface Ethernet0/0
ip address 10.0.0.8 255.255.255.0
ip nat inside
!
interface Ethernet0/1
ip address 11.0.0.8 255.255.255.0
ip nat outside
ip policy route-map block-h323
ip nat inside source static 10.0.0.5 1.0.0.5
access-list 102 permit tcp any host 1.0.0.5 eq 1720
access-list 102 permit tcp any eq 1720 host 1.0.0.5
route-map block-h323 permit 10
match ip address 102
set interface Null0
* Blocking port 1720 using dynamic translations
Dynamic translations are vulnerable to attack from the outside address of the original flow through the open translation, but can be timed out quickly to reduce the risk of exposure with the ip nat translation port-timeout tcp 1720 2 command. This times out the translation for port 1720 in 2 seconds, and may be too short for the necessary call setup request to process.
NAT can be configured to not translate traffic sourced or destined to port 1720 with the use of route maps to match traffic instead of access lists. The sample configuration listed below permits traffic sourced from the 10.0.0.0/24 network to be translated to an address within the NAT pool "h323-test" except for traffic with a source or destination port of 1720.
Note: This will prevent users from using NAT for H.323-enabled applications from their PC desktops, such as NetMeeting. It is critical to understand your network and the applications in use on it when applying this type of workaround.
interface Ethernet0/0
ip address 10.0.0.8 255.255.255.0
ip nat inside
!
interface Ethernet0/1
ip address 11.0.0.8 255.255.255.0
ip nat outside
ip nat pool h323-test 1.0.0.5 1.0.0.15 prefix-length 24
ip nat inside source route-map h323-block pool h323-test
access-list 101 deny tcp any any eq 1720
access-list 101 deny tcp any eq 1720 any
access-list 101 permit ip host 10.0.0.0 0.0.0.255
route-map h323-block permit 10
match ip address 101
Defining a Windows-based access control list to limit H.323 traffic from only locally trusted hosts
A scripted workaround will be made available in order to create an IP Security Policy on the host to allow only H.323 traffic from specifically allowed sources. This workaround named IPSec-H323.exe should be posted to Cisco.com the week of 13-January-2004.
|
|
|
|
|