世界中に蔓延(まんえん)し,今なお攻撃を続けている「Code Red」(あるいは「Code Red II」)ワーム。しかし,インターネットに大きな影響をおよぼしたワームはこれが初めてではない。13年前,システム管理者たちを恐怖に陥れた「Morris Worm」が登場している。今回はインターネット・ワームの原点である Morris Worm を取り上げ,ワームの脅威について一から考えてみたい。13年前の例から学べることは,いまだに実に多いのである。
ワームが招いた「暗黒の木曜日」
事の始まりは,1988年11月2日。同日夕方に MIT (マサチューセッツ工科大学) のホストに仕込まれた Morris Worm は自己増殖を繰り返しながら,インターネット(当時は 「ARPANET」)に接続しているホストへ侵入して,次から次へと感染を広げていった。
そして,最終的にはインターネットに接続しているホストの 5% から 10% に侵入することに成功した。侵入したホストでは,ワームはさらに自己増殖し,プロセスを次から次へと生成して,システムのリソースを食いつぶした。そのため,ホストはまったく使い物にならなくなった。
驚いたのは,侵入されたホストの管理者たちであった。翌11月3日木曜日は,彼らにとって「暗黒の木曜日」となった。彼らは高負荷状態に陥ったシステムを回復させるために,多大な苦労を強いられた。ディスプレイに表示された,延々と増え続けるプロセスの山を見て,途方に暮れたという。このセキュリティ・インシデントは「Net Crash of '88」と呼ばれ,今でも語り草となっている。
複数の侵入手法を持つ Morris Worm
Morris Worm という名称は,作者である Robert Tappan Morris 氏の名前から付けられた。「the Internet Worm」あるいは「Cornell Internet Worm」などと呼ばれることもある。
ワーム作成当時,彼が Cornell 大学の大学院生であったことや,父親が NSA (National Security Agency:米国国家安全保障局)の職員であったことなどから,マス・メディアから大きな注目を浴びた。
しかし,もっとも強いインパクトを与えたのは,ワームという概念そのものであった。
このときまで,インターネットはワームによる被害に遭ったことがなかった。ワームに関する,いくつかの方法論や実現のためのテクニックについて,一部では議論されていたものの,実際に機能するワーム,すなわち「ネットワーク経由で感染し,自己増殖するプログラム」は,それまで一切存在しなかったのである。
Morris Worm がターゲットとしたのは, 米DEC (その後 1998 年に Compaq 社に買収された)のコンピュータ「VAX」および米Sun Microsystems の「Sun-3」上で動作する BSD Unix OS であった。加えて, BSD Unix から“派生”した 「Sun OS」なども対象であった。
Morris Worm の侵入手法は,1種類ではなかった。上記の OS が実装しているいくつかのネットワーク・サービス・プログラムに存在する,既知の脆弱性を悪用して侵入した。具体的には,以下のプログラムの脆弱性を悪用した。
(1)rsh,rexec
(2)sendmail
(3)fingerd
それぞれにおける侵入手法を紹介しよう。
第1の侵入手法
rsh と rexec は,リモートからサーバー上でコマンドを実行できるようにするためのネットワーク・サービスである。いずれも勝手に実行されないように,認証機能が用意されている。rexec を使用する際にはパスワードを入力する必要があり, rsh は “Trusted Host”,すなわち「信頼されたホスト」であると設定されたホストからでなければ実行できないようになっている。
ワームはこれらの認証機能をかいくぐって侵入した。rexec については「辞書攻撃」により,認証を突破した。辞書攻撃とは,サーバーに置かれた辞書ファイルに登録されている単語を次から次へと入力して,パスワードを破る手法である。
rsh については至極単純である。「信頼されたホスト」から侵入するのである。つまり,(1)単純なパスワードを使用しているサイト,および(2)「信頼されたホスト」を安易に設定しているサイトが,第1の侵入手法の餌食となった。
この手法は rsh や rexec のセキュリティ・ホールを突くものではない。サービス運用上の不備をつくものである。
第2の侵入手法
sendmail は電子メールを配送するためのプログラムである。当時の sendmail が提供する機能の中には,隠しモードとして“DEBUG”と呼ばれるモードが存在していた。この DEBUG モードには,権限がないユーザーでもリモートから任意のコマンドを root 権限で実行できるという既知の問題があった。ワームはこれを侵入に悪用したのである。
第3の侵入手法
BSD Unix 4.2 および 4.3 に実装された「fingerd」にはバッファ・オーバーフローを発生させてしまう問題があった。fingerd とは,リモートからシステム上のユーザー・アカウント情報を問い合わせるためのプログラムである。そのため,リモートから任意のコードを root 権限で実行できてしまった。ワームはこの問題を持った VAX マシンに対して Exploit Code *1 を実行し,侵入したのである。
*1:Exploit Code とは,セキュリティ・ホールを利用して侵入するためのプログラムのことを指す。
事態は1週間後に収拾
事態が落ち着くまでには1週間を要した。長引いた理由の1つは,BSD Unix のリリース元である,カリフォルニア大学バークレイ校がワームの拡散を停止させるプログラムについて電子メールでアナウンスしたものの,受け取れなかった管理者が多かったためである。彼らは,早い段階でワームが sendmail を悪用していることに気付いたために,同プログラムを停止していたのである。
ワームのことを友人に漏らしていたため,警察は Morris 氏が作者であることを,あっという間に突き止めた。その後,彼は1986年に施行された「US Federal Law Computer Fraud and Abuse Act (Title 18)」(コンピューター詐欺および乱用防止法)の違反行為による最初の有罪判決を受けた。そして,保護観察処分と社会奉仕,および罰金が刑として与えられた。
また,この事件を契機として,カーネギーメロン大学に CERT/CC が設立された *2。
*2:詳細については,以下のページを参照のこと。
"The CERT Coordination Center FAQ A8. How long has the CERT/CC been in operation?"
◇ ◇ ◇ ◇ ◇ ◇
Donn Seeley 氏による Morris Worm についての詳細なレポート「A Tour of the Worm」には,以下のような一節がある。
「本稿は,一体何が起きて,どういった結果を招いたかについて知ってもらい,次回同じようなことが発生した際の備えにしてもらうためのものである」
この願いは,後のシステム管理者たちに届いたのだろうか。残念ながらそうとは言えない。13年前と同じように,既知のバッファ・オーバーフローを悪用したワームの被害が後を絶たない。Code Red ワームはその最たる例である。過去の教訓を生かせていないのである。
Morris 氏は,動機について「人目を引くためにやった」と供述したという。筆者には,最近の事例も同様の動機で行われているように思えてならない。つまり,「セキュリティ・ホールを放置することが,どれだけ危険かを警告するためにワームを放つ」あるいは単に「騒がれることを面白がってワームを放つ」ということである。
ワームは今後も作られ,そしてインターネットに放たれ続けるだろう。システム管理者は,こういった輩(やから)がいることを今一度認識し,ワーム対策,すなわちセキュアな設定とパッチの適用の重要性を考えていただきたい。
追記:
本稿を執筆している最中にも,新種の「x.c」ワームが発生した。このワームについては,telnetd の既知のバッファ・オーバーフロー問題 *3 を悪用して侵入することは判明しているものの,どの OS をターゲットにしているのかについては現在不明である。telnet を提供しているシステムの管理者は,パッチを適用するか,不要であればサービスを停止するなどして,対策を施していただきたい。
*3:詳細については以下を参照のこと。
- Multiple Vendor Telnetd Buffer Overflow Vulnerability
- multiple vendor telnet daemon vulnerability
- CERT Advisory CA-2001-21 Buffer Overflow in telnetd
- CERT Advisory CA-2001-21 Buffer Overflow in telnetd(邦訳版)
- Red Hat, Inc. Red Hat Security Advisory RHSA-2001:099-06
- Red Hat, Inc. Red Hat Security Advisory RHSA-2001:100-02
- IRIX Telnet protocol options vulnerability
- Buffer overflow vulnerability in telnet daemon (IBM AIX)
- DSA-070-1 netkit-telnet (Debian GNU/Linux)
- FreeBSD-SA-01:49 telnetd contains remote buffer overflow
- NetBSD-SA2001-012 telnetd(8) options overflow.
【9月10日追記】“x.c”ワームは,FreeBSD,NetBSD,BSDI,BSD/OS をターゲットとすることが判明した。ただし,現在は収束に向かっている。というのも,このワームは,自分自身を特定のサイトからダウンロードして増殖するワームであり,このサイトにあった x.c のソース・コードが削除されているためである。
しかし,今後同様のワームが発生する可能性は十分にある。また,ワームに限らず,他の不正アクセスの侵入経路に悪用される恐れもある。そのため,この telnetd 問題の対策は必ず施す必要がある。
◆BSDI BSD/OS 4.1 SECURITY PATCH M410-043 (info)
◆BSDI BSD/OS 4.2 SECURITY PATCH M420-014 (info)
なお,Sun Microsystems 製 Solaris OS も 影響を受けるとの報告があるが,パッチはリリースされていない。したがって同OS に関しては,telnetd を停止することが,この問題を回避する唯一の手段となる。
◎Morris Worm についての参考情報
◆Bob Sullivan, "Remembering the Net Crash of ‘88"
◆Larry Boettger, "The Morris Worm: how it Affected Computer Security and Lessons Learned by it"
◆Andy Sudduth, "The What, Why, and How of the 1988 Internet Worm"
新井悠 (ARAI Yuu)
株式会社ラック コンピュータセキュリティ研究所
y.arai@lac.co.jp
IT Proセキュリティ・サイトが提供する「今週のSecurity Check [一般編]」は,その週に起きたUNIX関連およびセキュリティ全般のニュースや動向をまとめた週刊コラムです。セキュリティ・ベンダーである「株式会社ラック」のスタッフの方を執筆陣に迎え,専門家の立場から解説していただきます。