[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[harden-mac:0482] Catalyst 2950-12での「Cisco IOS Interface Blocked by IPv4 Packet」の検証



石川です。

# memo MLとHarden-Mac MLにマルチポストしています。_o_

○Cisco Security Advisory: Cisco IOS Interface Blocked by IPv4 Packet
http://www.cisco.com/warp/public/707/cisco-sa-20030717-blocked.shtml
に関して、Cisco製L2スイッチであるCatalyst 2950-12(WS-C2950-12)で
検証する機会を得たので報告します。


■検証結果の概要
先に結論から言いますと、各所の情報を拝見する限りでは「(影響のある
バージョンの) IOSを搭載し、IPv4を処理するルータ及びスイッチ全てに対し
深刻なDoSが成立する」ような印象を受けたのですが、手元の検証では
exploit実行後にWS-C2950-12を宛先とする通信(pingやtelnetなど)は
できなくなるもののL2スイッチとしては機能し続ける事が解りました。

# もちろん、だから対処しなくて良いという訳ではありませんし、手元の
# 環境でのみの話かも知れませんが。

■検証環境
○検証対象:Cisco Catalyst 2950-12(WS-C2950-12)
○対象のIOSのバージョン:12.1(13)EA1
(この脆弱性に対処済みのバージョンは 12.1(13)EA1c)
○使用したexploit
・RE: Cisco IOS exploit (44020) (bugtraq)
http://archives.neohapsis.com/archives/bugtraq/2003-07/0268.html
にある、hpingを利用したshell script
○exploit実行端末環境
・Mac OS X 10.2.6
・hpingは下記のバイナリを使用
http://www.hping.org/macosx/hping2-macosx-cvs-bin
・検証時は、この端末で同時にWS-C2950-12のコンソールを監視
○実行端末は2950-12のポートに直接接続。
 2950-12は上位ルータにも接続されており、実行端末は2950-12と
 上位ルータを介してLAN内の端末及びインターネットにアクセス可能。
(実行端末と他の端末は同じVLANに属している)

■exploitの実行
○2950-12の正常動作確認
・実行端末を2950-12のコンソールに接続し、正常動作を確認 →OK
・実行端末から、2950-12及びLAN端末へpingで疎通確認 →OK
・実行端末から、2950-12へtelnetでログイン →OK

○2950-12へのexploit実行
・実行端末より以下の通りに実行
(以下、192.168.aaa.aaaは2950-12にふられているIPアドレス)

% sudo ./cisco_exploit.sh 192.168.aaa.aaa 0

Password:
Warning: fixing MTU to 1500 !
HPING 192.168.aaa.aaa (en0 192.168.aaa.aaa): raw IP mode set, 20 headers + 26 data bytes

--- 192.168.aaa.aaa hping statistic ---
19 packets tramitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms
Warning: fixing MTU to 1500 !
HPING 192.168.aaa.aaa (en0 192.168.aaa.aaa): raw IP mode set, 20 headers + 26 data bytes

--- 192.168.aaa.aaa hping statistic ---
19 packets tramitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms
Warning: fixing MTU to 1500 !
HPING 192.168.aaa.aaa (en0 192.168.aaa.aaa): raw IP mode set, 20 headers + 26 data bytes

--- 192.168.aaa.aaa hping statistic ---
19 packets tramitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms
Warning: fixing MTU to 1500 !
HPING 192.168.aaa.aaa (en0 192.168.aaa.aaa): raw IP mode set, 20 headers + 26 data bytes

--- 192.168.aaa.aaa hping statistic ---
19 packets tramitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms

・2950-12へping、及びtelnetでログインできるか確認
 → pingも返ってくるし、ログインもできる
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^

・1回ではなく連続してexploitを実行し、毎回pingとtelnetで確認。
 → 4回連続実行後、pingにもtelnetにも反応しなくなる
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

% telnet 192.168.aaa.aaa

Trying 192.168.aaa.aaa...
telnet: connect to address 192.168.aaa.aaa: Operation timed out
telnet: Unable to connect to remote host

・2950-12を再起動させ、正常状態に戻し、正常動作確認

・exploitの「--count 19」を「--count 76」と値を4倍に変更して
 再度exploitを実行(パケット送出量が4倍になる)
 → 1回の実行でpingにもtelnetにも反応しなくなることを確認


■exploit実行後の状況確認
○exploitが成功しても、コンソールには何も表示されない。

○今回の脆弱性では、input queueがfullになるはずなので確認してみる。
>sh int | include queue
  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
  Output queue :0/40 (size/max)
<以下、全てのinterfaceでも同じ>
 → input queueのsizeの値がfullになっていない
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  (この脆弱性の説明では、sizeはmaxの値(75)以上=fullになるはず)

○「sh int」で各interfaceの状況を見てみるが、特に通常時と変わる所は無い。

○2950-12が未だpingにもtelnetにも反応しない事を確認の上、
 実行端末からLAN端末へpingやその他の通信を行ってみる
 → pingは返ってくるし、通信も正常に行える
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

○2950-12を再起動させて正常状態へ復帰


■結果と考察
○結果
・exploitは有効であり、2950-12を宛先とした通信はできなくなるため
 一応のDoSとは成り得る。
・ただし、DoSを受けた2950-12を介しての通信は可能なまま。
・fullになるはずのinput queueもfullにはならなかった。
・今回使用したexploitはルータに対しては1回で有効なはずなのだが、
 2950-12に対しては4回連続(もしくは送出パケットを4倍にして)
 実行しないと有効ではなかった。

○考察など
結果から考えるに、2950-12に対してexploitを打たれても、2950-12に
対して通信できなくなるだけで、L2 スイッチとしては機能し続けるので
影響は軽微と言えるかもしれない。

ちなみに、
CTC [Security] 0059-02 IOSにおける インプットキューブロック問題
http://www.ctc-g.co.jp/security/0059-02.html
の『影響』の部分によれば、

 該当する特別に巧妙に作成された IPv4パケットを受信した装置は、
 入力インターフェースのトラフィックの処理ができなくなるでしょう。
 その装置はルーティングプロトコルパケットやARPパケットなど、
 そのルータを宛て先とするパケットの処理ができなくなるでしょう。

とある。これを2950に適用して考えるに、

・L2スイッチなのでルーティングプロトコルやARPが関係しない
 →なので、2950を介した通信は正常に行われ続ける
・ただし、2950を宛先とするパケットの処理はできなくなる

ということではないだろうか。

input queueがfullにならない件や、4回 or 4倍でなければならなかった
理由については不明。

また、もしかして、L3 スイッチ製品でもswitchportのみの設定で稼働させて
いれば、exploitを実行されてもスイッチとして稼働し続けるのかも???



以上、2950-12どころかCisco製品に初めて触れてから、まだ一週間少々しか
経っていない人間の検証及び考察なので、諸々保証できません。
# これ以上の検証も考察も調査も行わないと思います。


-- 
石川 泰久/vm_converter
vm_converter@xxxxxxx